கணினி அறிவியல் - மாற்றமிலி | 11th Computer Science : Chapter 8 : Iteration and recursion
மாற்றமிலி (Invariant)
எடுத்துக்காட்டு 8.1. தொடக்க நிலையில் (u, v) = (20, 15) என்று இருக்கும் போது, பின்வரும் மதிப்பிருத்தலில் செயல்படுத்தப்படுகிறது என்று வைத்துக்கொள்வோம்.
-- before: u, v = 20, 15 u, v :=u+5,v-5
--after: u, v = 25, 10
மதிப்பிருத்தலின் முடிவில், (u, v = 20, 15) என இருக்கும். ஆனால், u + v என்ற செயல்கூறின் மதிப்பைப் பற்றி நீவீர் உற்றுநோக்குவது என்ன?
before: u + v = 20 + 15 = 35
after: u + v = 25 + 10 = 35
மதிப்பிருத்தலில் u + v யின் மதிப்பு மாற்றம் பெறவில்லை. u + v மதிப்பிருத்தல் என அழைக்கிறோம். இந்த மாறாக் கோவையை மதிப்பிருத்தலின் தொடக்கத்திலும் இறுதியிலும் முன்னும் பின்னும் பின்வருமாறு குறிப்பிடலாம்.
--before: u + v = 35 u, v : = u + 5, v - 5
--after : u + v = 35
u + v ஒரு மாற்றமிலி என்று அழைக்கலாம். u + v யின் மதிப்பு எப்போதும் 35 ஆகவே u + v = 35 என்பதும் ஒரு மாற்றமிலி எனக் கூறலாம். ஏனெனில், மதிப்பிருத்தலின் தொடக்கத்திலும், இறுதியிலும் அதன் மதிப்பு 'மெய்' என்றே இருக்கிறது
எடுத்துக்காட்டு 8.2: தொடக்க நிலையில், (p, c = 10, 9) என்று எடுத்துக்கொண்டு, பின்வரும் மதிப்பிருத்தலை செயல்படுத்தினால், மதிப்பிருத்தலின் இறுதியின் (p, c) = (11, 10) என இருக்கும்.
--before : p, c = 10 , 9 p, c := p + 1, c+1
--after: p, c = 11 , 10
மேற்காண் நெறிமுறையில் ஒரு மாற்றமிலியை கண்டுபிடிக்க முடிகிறதா? மதிப்பிருத்தலின் தொடக்கத்திலும், இறுதியிலும் p - c யின் மதிப்பு என்ன?
தொடக்கத்தில் p - c = 10 - 9 = 1
இறுதியில் p - c = 11 - 10 = 1
எனவே, p - c = 1 என்பது ஒரு மாற்றமிலி என்று காண்கிறோம்.
பொதுவாக, மாறிகளாலான ஒரு கோவை, மதிப்பிருத்தலின் தொடக்கத்திலும், இறுதியிலும் ஒரே மதிப்புடையதாக இருந்தால், அந்த கோவை மதிப்பிருத்தலின் மாற்றமிலி எனப்படும். p (u, v) என்பது u மற்றும் v என்ற மதிப்புகளையுடைய ஒரு கோவை என்க. uக்கு பதிலாக e1யையும், vக்கு பதிலாக e2வையும் ஒரே நேரத்தில் இடம் மாற்றம் செய்யும் போது கிடைக்கும் கோவையை p(u, v) [u, v := e1, e2] என்று எழுதுகிறோம். P(u,v) [u,v := el, e2] = P(u,v) என்பது மெய்யெனில் p(u, v) என்பது u, v := e1, e2 என்ற மதிப்பிருத்தலின் மாற்றமிலி ஆகும்.
எடுத்துக்காட்டு 8.3
p - c என்பது p, c:=p + 1, c +1 மாற்றமிலி என்பது காண்பி.
p (p, c) = p - c என்க.
எனில், p (p, c) [p, c := p + 1, c + 1]
= p - c [p, c := p + 1, c + 1] .
= (p + 1) - (c + 1)
= p - c
= p (p, c)
(p - c) [p, c := p + 1, c + 1] = p - c என்பதால், p - c என்பது p, c := p + 1, c + 1. என்ற மதிப்பிருத்தலின் மாற்றமிலி.
எடுத்துக்காட்டு 8.4.
m, n := m + 3, n - 1 என்று மதிப்பிருத்தலின் m, n என்பவை இரண்டு மாறிகள் என்க. எனில், m+3n என்ற கோவை ஒரு மாற்றமிலியா என காண்க :
P(m, n) = m + 3n எனில்,
P (m, n) [m, n := m + 3, n - 1]
= m + 3n [m, n := m + 3, n - 1]
= (m + 3) + 3(n - 1)
= m + 3 + 3n – 3
= m + 3n
= P (m, n)
(m + 3n) [m, n = m + 3, n - 1] = m + 3n என்பதால் m +3n என்பது m, n := m + 3, n - 1 என்ற மதிப்பிருத்தலின் ஒரு மாற்றமிலியாகும்.