செலுத்திப் பிணையங்கள்—ஒரு அறிமுகம்
Published by Arun Isaac on
In other languages: English
Tags: மென்பொருள், செலுத்திப் பிணையம்
செலுத்திப் பிணையங்கள் (propagator networks) பெரும்பான்மை நிரல்மொழிகளின் கோவை மையத்தன்மையிலிருந்துத் (expression-orientedness) தப்ப உதவும் புதியதோர் கணிப்பு முறை. செலுத்திப் பிணையங்கள் இரு உறுப்புகளை உடையவை—கட்டங்களும் (cells) செலுத்திகளும் (propagators). கட்டங்கள் மாறிகளைப் (variables) போன்றவை; மதிப்புகளைக் (values) கொண்டவை. செலுத்திகள் தூய செயற்கூறுகள்—ஒரு மதிப்பையோப் பலவற்றையோ உள்ளீடாக எடுத்து ஒரு மதிப்பை வெளியிடுவது1. கட்டங்கள் செலுத்திகளுக்கு மட்டுமே இணைக்கப்பட்டிருக்கும், பிறக் கட்டங்களுக்கு இணைக்கப்பட்டிருக்கா. அதேப் போன்று, செலுத்திகள் கட்டங்களுக்கு மட்டுமே இணைக்கப்பட்டிருக்கும், பிறச் செலுத்திகளுக்கு இணைக்கப்பட்டிருக்கா. எல்லா இணைப்புகளும் திசையுடையவை—கட்டங்களிலிருந்துச் செலுத்திகளின் உள்ளீட்டு முனைகளுக்கும் அல்லது செலுத்திகளின் வெளியீட்டு முனைகளிலிருந்துக் கட்டங்களுக்கு. பலச் செலுத்திகள் ஒரேக் கட்டத்திற்கு வெளியிடலாம். ஒருச் செலுத்தியின் உள்ளீட்டு முனையுடன் இணைக்கப்பட்ட கட்டத்தின் மதிப்பு மாறும்பொழுது, அச்செலுத்தித் தூண்டப்பட்டு அதன் செயற்கூறு கணிக்கப்பட்டு கணிக்கப்பட்ட மதிப்பு அச்செலுத்தியின் வெளியீட்டு முனையில் இணைக்கப்பட்டிருக்கும் கட்டத்தில் குவிக்கப்படுகிறது (குவித்தல் பற்றிப் பிறகுக் கூறுகிறேன்; இப்போதைக்கு அம்மதிப்பு இயல்பாக எழுதப்படுகிறது என்றேக் கொள்க).
எடுத்துக்காட்டிற்கு, இரு a, b என்னும் இரு எண்களைக் கூட்டி மொத்தத்தை இன்னொருக் கட்டத்தில் எழுதும் எளிமையான செலுத்திப் பிணையத்தைக் கீழ்க் காண்க. அதனின் கீழ் இன்னொருச் செலுத்திப் பிணையம் செயல்படுவது படிப்படியாகக் காட்டப்பட்டுள்ளது.
Figure 2: செயல்பாட்டில் ஒருச் செலுத்திப் பிணையம். உச்சக் கட்டத்தில் மதிப்பு எழுதப்படும்பொழுது அதனுடன் இணைக்கப்பட்ட செலுத்திச் செயலாற்றி அதன் வெளியீட்டை அதன் வெளியீட்டுக் கட்டத்தில் எழுதுகிறது. பிறகு, வேறு இருச் செலுத்திகள் தூண்டப்பட்டு அவற்றின் வெளியீடுகளை அவற்றின் வெளியீட்டுக் கட்டங்களில் எழுதுகின்றன.
திசையிலாக் கட்டுப்பாட்டுச் செலுத்தி
செலுத்திகள் திசையிலாக் கட்டுப்பாட்டையும் (constraint) குறிக்கலாம். எடுத்துக்காட்டிற்கு, கீழ்க் காணும் செலுத்திப் பிணையம் a + b = sum என்னும் கட்டுப்பாட்டை அல்லது சமன்பாட்டை குறிக்கிறது. இப்பிணையத்தால் a, b யிலிருந்து sum கணிப்பதோடு b, sum யிலிருந்து a மற்றும் a, sum யிலிருந்து b ஆகியவற்றையும் கணிக்க இயலும். ஆனால், இதுச் சிறப்புப் பண்பன்று. அகத்தே, இது மூன்று தனித்தனிக் கணிப்புகளையும் குறிக்கும் திசையுடைச் செலுத்திகள் கொண்டே அமைக்கப்பட்டது.
கட்டங்களில் மதிப்புக் குவியல்
சற்று பின்வாங்கி முன்னுரையில் கூறிய மதிப்புக் குவியலுக்கு வருவோம். கட்டங்கள் அவற்றில் எழுதப்படும் மதிப்பை அமைதியாக வாங்கிக் கொள்ளும் கொள்கலன்கள் அன்று; அவை மதிப்புகளை குவிப்பவை. இதுச் செலுத்திப் பிணையத்தின் இன்றியமையாத பண்புகளுள் ஒன்று. செலுத்திப் பிணையங்கள் தகவலை ஒருப் போதும் அழிப்பதேயில்லை; தகவல் சேர்ந்துக் கொண்டே மட்டும் தான் போகும். இதை ஓர் எடுத்துக்காட்டுடன் விளக்குகிறேன். கீழ்க் காணும் பிணையத்தில் ஒரேக் கட்டத்துடன் இருச் செலுத்திகள் இணைக்கப்பட்டுள்ளன. ஒவ்வொருச் செலுத்தியும் சில மதிப்புகள் இல்லா வரிசையை—ஒருப் பகுதி வரிசையை (partial array)—வெளியிடுகிறது. அக்கட்டம் இருப் பகுதி வரிசைகளையும் ஒன்று சேர்த்து சற்று முழுமையான வரிசையை உருவாக்குகிறது. கட்டங்களில் தகவல் நீக்கப்படாததால் ஒவ்வொருப் பகுதி வரிசையும் எப்போது எழுதப்படுகிறதென்பது பொருட்டல்ல. ஒவ்வொருக் கட்டத்திற்கும் அதற்குள் இருக்கும் மதிப்பிற்கேற்ப ஒவ்வொரு விதமான குவியல் முறை இருக்கலாம். கொத்து அட்டவணைகளையோ (hashtable) மெய்யெண் இடைவெளிகளையோ ஒன்றாக்கும் பிறக் குவியல் முறைகளை எண்ணலாம்.
தளச் சார்பின்மை
இக்கட்டுரையில் எக்குறிப்பிட்டச் அமலாக்க முறையையும் சாராது செலுத்திப் பிணையங்களை விளக்கியுள்ளேன். செலுத்திப் பிணையங்களை வெவ்வேறு கணினித் தளங்களில் அமலாக்கலாம். மொத்தப் பிணையமும் ஒரேக் கணினியில் உரையலாம். அல்லது, செலுத்திகளும் கட்டங்களும் வெவ்வேறு கணினிகளில் உரைந்துக் கணினிப் பிணையம் மூலம் ஒன்றையொன்றுத் தொடர்புக் கொள்ளலாம். கட்ட மதிப்புகள் கணினி நினைவகம் மூலமோ கோப்பமைப்பு மூலமோ கணினிப் பிணையம் மூலமோ பகிரப்படலாம். ஒவ்வொரு வடிவாக்க முடிவுக்கும் ஆற்றுதிறன் நடைமுறை பயன்பாட்டுத் தகைமையென விளைவுகள் பல. ஆனால் இவற்றின் மீது கவனத்தைச் செலுத்தி செலுத்திப் பிணையங்களின் வரைவாற்றலை (expressive power) மறத்தல் தவறு. செலுத்திப் பிணையங்கள் ஏரண நிரலாக்க (logic programming) முறைகளை ஒத்தவை என்றக் கண்ணோட்டத்தில் பார்ப்பதே சரி.
Footnotes:
பல மதிப்புகளையும் வெளியிடலாம். ஆனால் அதைப் பற்றி இப்போதுக் கவலைப்பட வேண்டாம்.