विकासवादी संगणना

From Vigyanwiki
Revision as of 17:24, 25 June 2023 by alpha>Indicwiki (Created page with "{{short description|Trial and error problem solvers with a metaheuristic or stochastic optimization character}} {{for|the journal|Evolutionary Computation (journal)}} {{Evolut...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

कंप्यूटर विज्ञान में, विकासवादी संगणना जैविक विकास से प्रेरित वैश्विक अनुकूलन के लिए कलन विधि का एक परिवार है, और कृत्रिम बुद्धिमत्ता और सॉफ्ट कंप्यूटिंग का उपक्षेत्र इन एल्गोरिदम का अध्ययन करता है। तकनीकी शब्दों में, वे मेटाह्यूरिस्टिक या स्टोकेस्टिक अनुकूलन चरित्र के साथ जनसंख्या-आधारित परीक्षण और त्रुटि समस्या समाधानकर्ताओं का एक परिवार हैं।

विकासवादी गणना में, उम्मीदवार समाधानों का एक प्रारंभिक सेट तैयार किया जाता है और पुनरावृत्त रूप से अद्यतन किया जाता है। प्रत्येक नई पीढ़ी कम वांछित समाधानों को हटाकर, और छोटे यादृच्छिक परिवर्तन पेश करके तैयार की जाती है। जैविक शब्दावली में, समाधानों की आबादी प्राकृतिक चयन (या कृत्रिम चयन) और उत्परिवर्तन के अधीन होती है। परिणामस्वरूप, जनसंख्या धीरे-धीरे फिटनेस (जीव विज्ञान) में वृद्धि करने के लिए विकसित होगी, इस मामले में एल्गोरिदम का चुना हुआ फिटनेस कार्य

विकासवादी संगणना तकनीकें समस्या सेटिंग्स की एक विस्तृत श्रृंखला में अत्यधिक अनुकूलित समाधान उत्पन्न कर सकती हैं, जो उन्हें कंप्यूटर विज्ञान में लोकप्रिय बनाती हैं। कई प्रकार और एक्सटेंशन मौजूद हैं, जो समस्याओं और डेटा संरचनाओं के अधिक विशिष्ट परिवारों के लिए उपयुक्त हैं। विकासवादी संगणना का उपयोग कभी-कभी विकासवादी जीव विज्ञान में सामान्य विकासवादी प्रक्रियाओं के सामान्य पहलुओं का अध्ययन करने के लिए इन सिलिको प्रयोगात्मक प्रक्रिया के रूप में भी किया जाता है।

इतिहास

समस्याओं को हल करने के लिए विकासवादी प्रक्रियाओं की नकल करने की अवधारणा कंप्यूटर के आगमन से पहले उत्पन्न हुई थी, जैसे कि जब एलन ट्यूरिंग ने 1948 में आनुवंशिक खोज की एक विधि प्रस्तावित की थी।[1] ट्यूरिंग की बी-प्रकार की यू-मशीनें आदिम तंत्रिका नेटवर्क से मिलती-जुलती हैं, और न्यूरॉन्स के बीच कनेक्शन एक प्रकार के आनुवंशिक एल्गोरिदम के माध्यम से सीखे गए थे। उनकी पी-टाइप यू-मशीनें सुदृढीकरण सीखने की एक विधि से मिलती-जुलती हैं, जहां खुशी और दर्द के संकेत मशीन को कुछ व्यवहार सीखने के लिए निर्देशित करते हैं। हालाँकि, ट्यूरिंग का पेपर 1968 तक अप्रकाशित रहा, और 1954 में उनकी मृत्यु हो गई, इसलिए इस प्रारंभिक कार्य का विकासवादी गणना के क्षेत्र पर बहुत कम या कोई प्रभाव नहीं पड़ा, जिसे विकसित होना था।[2] एक क्षेत्र के रूप में विकासवादी कंप्यूटिंग 1950 और 1960 के दशक में गंभीरता से शुरू हुई।[1]इस समय कंप्यूटिंग में विकास की प्रक्रिया का उपयोग करने के कई स्वतंत्र प्रयास हुए, जो लगभग 15 वर्षों तक अलग-अलग विकसित हुए। इस लक्ष्य को प्राप्त करने के लिए विभिन्न स्थानों में तीन शाखाएँ उभरीं: विकास रणनीति, विकासवादी प्रोग्रामिंग और आनुवंशिक एल्गोरिदम। एक चौथी शाखा, आनुवंशिक प्रोग्रामिंग, अंततः 1990 के दशक की शुरुआत में उभरी। ये दृष्टिकोण चयन की विधि, अनुमत उत्परिवर्तन और आनुवंशिक डेटा के प्रतिनिधित्व में भिन्न हैं। 1990 के दशक तक, ऐतिहासिक शाखाओं के बीच अंतर धुंधला होना शुरू हो गया था, और 'विकासवादी कंप्यूटिंग' शब्द 1991 में एक ऐसे क्षेत्र को दर्शाने के लिए गढ़ा गया था जो सभी चार प्रतिमानों में मौजूद है।[3] 1962 में, लॉरेंस जे. फोगेल ने संयुक्त राज्य अमेरिका में इवोल्यूशनरी प्रोग्रामिंग के अनुसंधान की शुरुआत की, जिसे एक कृत्रिम बुद्धिमत्ता प्रयास माना गया। इस प्रणाली में, भविष्यवाणी की समस्या को हल करने के लिए परिमित-राज्य मशीनों का उपयोग किया जाता है: इन मशीनों को उत्परिवर्तित किया जाएगा (राज्यों को जोड़ना या हटाना, या राज्य संक्रमण नियमों को बदलना), और इन उत्परिवर्तित मशीनों में से सर्वश्रेष्ठ को भविष्य की पीढ़ियों में विकसित किया जाएगा। आवश्यकता पड़ने पर भविष्यवाणियाँ उत्पन्न करने के लिए अंतिम परिमित राज्य मशीन का उपयोग किया जा सकता है। विकासवादी प्रोग्रामिंग पद्धति को भविष्यवाणी समस्याओं, सिस्टम पहचान और स्वचालित नियंत्रण पर सफलतापूर्वक लागू किया गया था। अंततः समय श्रृंखला डेटा को संभालने और गेमिंग रणनीतियों के विकास को मॉडल करने के लिए इसका विस्तार किया गया।[3]

1964 में, इंगो रेचेनबर्ग और हंस पॉल सल्फर ने जर्मनी में विकास रणनीति के प्रतिमान का परिचय दिया।[3]चूंकि पारंपरिक ढतला हुआ वंश तकनीक ऐसे परिणाम उत्पन्न करती है जो स्थानीय मिनीमा में फंस सकते हैं, रेचेनबर्ग और श्वेफेल ने प्रस्तावित किया कि इन मिनिमा से बचने के लिए यादृच्छिक उत्परिवर्तन (कुछ समाधान वेक्टर के सभी मापदंडों पर लागू) का उपयोग किया जा सकता है। माता-पिता के समाधानों से बाल समाधान तैयार किए गए, और दोनों में से जो अधिक सफल था उसे भावी पीढ़ियों के लिए रखा गया। इस तकनीक का उपयोग पहली बार द्रव गतिकी में अनुकूलन समस्याओं को सफलतापूर्वक हल करने के लिए दोनों द्वारा किया गया था।[4] प्रारंभ में, इस अनुकूलन तकनीक को कंप्यूटर के बिना निष्पादित किया गया था, इसके बजाय यादृच्छिक उत्परिवर्तन निर्धारित करने के लिए पासे पर निर्भर किया गया था। 1965 तक, गणनाएँ पूरी तरह मशीन द्वारा की जाने लगीं।[3]

जॉन हेनरी हॉलैंड ने 1960 के दशक में आनुवंशिक एल्गोरिदम की शुरुआत की और इसे 1970 के दशक में मिशिगन विश्वविद्यालय में आगे विकसित किया गया।[5] जबकि अन्य दृष्टिकोण समस्याओं को हल करने पर केंद्रित थे, हॉलैंड का मुख्य उद्देश्य अनुकूलन का अध्ययन करने और यह निर्धारित करने के लिए आनुवंशिक एल्गोरिदम का उपयोग करना था कि इसे कैसे अनुकरण किया जा सकता है। बिट स्ट्रिंग के रूप में दर्शाए गए गुणसूत्रों की आबादी को एक कृत्रिम चयन प्रक्रिया द्वारा रूपांतरित किया गया, बिट स्ट्रिंग में विशिष्ट 'एलील' बिट्स का चयन किया गया। अन्य उत्परिवर्तन विधियों के बीच, विभिन्न जीवों के बीच डीएनए के आनुवंशिक पुनर्संयोजन को अनुकरण करने के लिए गुणसूत्रों के बीच बातचीत का उपयोग किया गया था। जबकि पिछली विधियाँ एक समय में केवल एक ही इष्टतम जीव को ट्रैक करती थीं (जिसमें बच्चे माता-पिता के साथ प्रतिस्पर्धा करते थे), हॉलैंड के आनुवंशिक एल्गोरिदम ने बड़ी आबादी को ट्रैक किया (जिसमें कई जीव प्रत्येक पीढ़ी में प्रतिस्पर्धा करते हैं)।

1990 के दशक तक, विकासवादी संगणना के लिए एक नया दृष्टिकोण सामने आया जिसे जेनेटिक प्रोग्रामिंग कहा जाने लगा, जिसकी जॉन बकरी सहित अन्य लोगों ने वकालत की।[3]एल्गोरिदम के इस वर्ग में, विकास का विषय स्वयं एक उच्च-स्तरीय प्रोग्रामिंग भाषा में लिखा गया प्रोग्राम था (मशीन कोड का उपयोग करने के लिए 1958 की शुरुआत में कुछ पिछले प्रयास किए गए थे, लेकिन उन्हें बहुत कम सफलता मिली थी)। कोज़ा के लिए, कार्यक्रम लिस्प (प्रोग्रामिंग भाषा) एस-अभिव्यक्ति थे, जिन्हें उप-एक्सप्रेशन के पेड़ के रूप में माना जा सकता है। यह प्रतिनिधित्व कार्यक्रमों को एक प्रकार के आनुवंशिक मिश्रण का प्रतिनिधित्व करते हुए, उप-वृक्षों की अदला-बदली करने की अनुमति देता है। प्रोग्राम को इस आधार पर स्कोर किया जाता है कि वे किसी निश्चित कार्य को कितनी अच्छी तरह पूरा करते हैं, और स्कोर का उपयोग कृत्रिम चयन के लिए किया जाता है। अनुक्रम प्रेरण, पैटर्न पहचान और योजना सभी आनुवंशिक प्रोग्रामिंग प्रतिमान के सफल अनुप्रयोग थे।

कई अन्य हस्तियों ने विकासवादी कंप्यूटिंग के इतिहास में भूमिका निभाई, हालांकि उनका काम हमेशा क्षेत्र की प्रमुख ऐतिहासिक शाखाओं में से एक में फिट नहीं हुआ। विकासवादी एल्गोरिदम और कृत्रिम जीवन तकनीकों का उपयोग करके विकास का सबसे पहला कम्प्यूटेशनल सिमुलेशन 1953 में निल्स ऑल बरीज़ द्वारा किया गया था, जिसके पहले परिणाम 1954 में प्रकाशित हुए थे।[6] 1950 के दशक में एक अन्य अग्रणी एलेक्स फ़्रेज़र (वैज्ञानिक)वैज्ञानिक) थे, जिन्होंने कृत्रिम चयन के अनुकरण पर पत्रों की एक श्रृंखला प्रकाशित की थी।[7] जैसे-जैसे शैक्षणिक रुचि बढ़ी, कंप्यूटर की शक्ति में नाटकीय वृद्धि ने व्यावहारिक अनुप्रयोगों को अनुमति दी, जिसमें कंप्यूटर प्रोग्राम का स्वचालित विकास भी शामिल था।[8] विकासवादी एल्गोरिदम का उपयोग अब मानव डिजाइनरों द्वारा निर्मित सॉफ़्टवेयर की तुलना में बहु-आयामी समस्याओं को अधिक कुशलता से हल करने और सिस्टम के डिज़ाइन को अनुकूलित करने के लिए भी किया जाता है।[9][10]


तकनीक

विकासवादी कंप्यूटिंग तकनीकों में अधिकतर मेटाह्यूरिस्टिक गणितीय अनुकूलन एल्गोरिदम शामिल होते हैं। मोटे तौर पर, इस क्षेत्र में शामिल हैं:

कई अन्य हाल ही में प्रस्तावित एल्गोरिदम के साथ एक संपूर्ण कैटलॉग इवोल्यूशनरी कंप्यूटेशन बेस्टियरी में प्रकाशित किया गया है।[11] यह ध्यान रखना महत्वपूर्ण है कि हालाँकि, कई हालिया एल्गोरिदम की प्रयोगात्मक मान्यता खराब है।[12]


विकासवादी एल्गोरिदम

विकासवादी एल्गोरिदम विकासवादी गणना का एक उपसमूह बनाते हैं, जिसमें वे आम तौर पर केवल प्रजनन, उत्परिवर्तन, आनुवंशिक पुनर्संयोजन, प्राकृतिक चयन और योग्यतम के अस्तित्व जैसे जैविक विकास से प्रेरित तंत्र को लागू करने वाली तकनीकों को शामिल करते हैं। अनुकूलन समस्या के लिए उम्मीदवार समाधान जनसंख्या में व्यक्तियों की भूमिका निभाते हैं, और हानि फ़ंक्शन उस वातावरण को निर्धारित करता है जिसके भीतर समाधान रहते हैं (फिटनेस फ़ंक्शन भी देखें)। उपरोक्त ऑपरेटरों के बार-बार आवेदन के बाद जनसंख्या का विकास होता है।

इस प्रक्रिया में, दो मुख्य ताकतें हैं जो विकासवादी प्रणालियों का आधार बनाती हैं: पुनर्संयोजन उत्परिवर्तन और क्रॉसओवर आवश्यक विविधता पैदा करते हैं और इस तरह नवीनता की सुविधा प्रदान करते हैं, जबकि चयन गुणवत्ता बढ़ाने वाली ताकत के रूप में कार्य करता है।

ऐसी विकासवादी प्रक्रिया के कई पहलू स्टोकेस्टिक हैं। पुनर्संयोजन और उत्परिवर्तन के कारण जानकारी के परिवर्तित टुकड़े यादृच्छिक रूप से चुने जाते हैं। दूसरी ओर, चयन ऑपरेटर या तो नियतात्मक या स्टोकेस्टिक हो सकते हैं। बाद के मामले में, उच्च फिटनेस फ़ंक्शन वाले व्यक्तियों के पास कम फिटनेस फ़ंक्शन वाले व्यक्तियों की तुलना में चुने जाने की अधिक संभावना होती है, लेकिन आमतौर पर कमजोर व्यक्तियों के पास भी माता-पिता बनने या जीवित रहने का मौका होता है।

विकासवादी एल्गोरिदम और जीव विज्ञान

आनुवंशिक एल्गोरिदम जैविक प्रणालियों और सिस्टम जीव विज्ञान को मॉडल करने के तरीके प्रदान करते हैं जो गतिशील प्रणालियों के सिद्धांत से जुड़े होते हैं, क्योंकि उनका उपयोग सिस्टम की भविष्य की स्थितियों की भविष्यवाणी करने के लिए किया जाता है। यह जीव विज्ञान में विकास के व्यवस्थित, सुनियंत्रित और उच्च संरचित चरित्र की ओर ध्यान आकर्षित करने का एक ज्वलंत (लेकिन शायद भ्रामक) तरीका है।

हालाँकि, गतिशील प्रणालियों के सादृश्य से परे, विशेष रूप से कम्प्यूटेशनल सिद्धांत के एल्गोरिदम और सूचना विज्ञान का उपयोग, विकास को समझने के लिए भी प्रासंगिक है।

इस दृष्टिकोण में यह पहचानने की योग्यता है कि विकास का कोई केंद्रीय नियंत्रण नहीं है; जीवों का विकास कोशिकाओं के भीतर और उनके बीच स्थानीय अंतःक्रियाओं के परिणामस्वरूप होता है। प्रोग्राम-विकास समानताओं के बारे में सबसे आशाजनक विचार हमें वे लगते हैं जो कोशिकाओं के भीतर प्रक्रियाओं और आधुनिक कंप्यूटरों के निम्न-स्तरीय संचालन के बीच स्पष्ट रूप से घनिष्ठ सादृश्य की ओर इशारा करते हैं।[13] इस प्रकार, जैविक प्रणालियाँ कम्प्यूटेशनल मशीनों की तरह हैं जो अगले राज्यों की गणना करने के लिए इनपुट जानकारी को संसाधित करती हैं, जैसे कि जैविक प्रणालियाँ शास्त्रीय गतिशील प्रणाली की तुलना में गणना के करीब होती हैं।[14] इसके अलावा, कम्प्यूटेशनल सिद्धांत की अवधारणाओं के बाद, जैविक जीवों में सूक्ष्म प्रक्रियाएं मौलिक रूप से अपूर्ण और अनिर्णीत (पूर्णता (तर्क)) हैं, जिसका अर्थ है कि "कोशिकाओं और कंप्यूटर के बीच सादृश्य के पीछे एक अपरिष्कृत रूपक से कहीं अधिक है।[15] गणना की सादृश्यता वंशानुक्रम प्रणालियों और जैविक संरचना के बीच संबंधों तक भी फैली हुई है, जिसे अक्सर जीवन की उत्पत्ति को समझाने में सबसे महत्वपूर्ण समस्याओं में से एक को प्रकट करने के लिए माना जाता है।

विकासवादी ऑटोमेटा[16][17][18], विकासवादी ट्यूरिंग मशीनों का एक सामान्यीकरण[19][20], जैविक और विकासवादी गणना के गुणों की अधिक सटीक जांच करने के लिए पेश किया गया है। विशेष रूप से, वे विकासवादी गणना की अभिव्यक्ति पर नए परिणाम प्राप्त करने की अनुमति देते हैं[18][21]. यह प्राकृतिक विकास और विकासवादी एल्गोरिदम और प्रक्रियाओं की अनिश्चितता के बारे में प्रारंभिक परिणाम की पुष्टि करता है। विकासवादी परिमित ऑटोमेटा, टर्मिनल मोड में काम करने वाले विकासवादी ऑटोमेटा का सबसे सरल उपवर्ग किसी दिए गए वर्णमाला पर मनमानी भाषाओं को स्वीकार कर सकता है, जिसमें गैर-पुनरावर्ती गणना योग्य (उदाहरण के लिए, विकर्णीकरण भाषा) और पुनरावर्ती गणना योग्य लेकिन पुनरावर्ती भाषा नहीं (उदाहरण के लिए, सार्वभौमिक ट्यूरिंग मशीन की भाषा) शामिल है। )[22].

उल्लेखनीय अभ्यासकर्ता

सक्रिय शोधकर्ताओं की सूची स्वाभाविक रूप से गतिशील और गैर-विस्तृत है। समुदाय का एक नेटवर्क विश्लेषण 2007 में प्रकाशित किया गया था।[23]

सम्मेलन

विकासवादी संगणना क्षेत्र में मुख्य सम्मेलनों में शामिल हैं

यह भी देखें

बाहरी संबंध


ग्रन्थसूची


संदर्भ

  1. 1.0 1.1 Eiben, A. E.; Smith, J. E. (2015), "Evolutionary Computing: The Origins", Natural Computing Series, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 13–24, doi:10.1007/978-3-662-44874-8_2, ISBN 978-3-662-44873-1, retrieved May 6, 2022
  2. Burgin, Mark; Eberbach, Eugene (April 12, 2013). "विकासवादी मशीनों के संदर्भ में विकासवादी ट्यूरिंग". arXiv:1304.3762 [cs.AI].
  3. 3.0 3.1 3.2 3.3 3.4 Evolutionary computation : the fossil record. David B. Fogel. New York: IEEE Press. 1998. ISBN 0-7803-3481-7. OCLC 38270557.{{cite book}}: CS1 maint: others (link)
  4. Fischer, Thomas (1986), "Kybernetische Systemanalyse Einer Tuchfabrik zur Einführung Eines Computergestützten Dispositionssystems der Fertigung", DGOR, Berlin, Heidelberg: Springer Berlin Heidelberg, p. 120, doi:10.1007/978-3-642-71161-9_14, ISBN 978-3-642-71162-6, retrieved May 6, 2022
  5. Mitchell, Melanie (1998). जेनेटिक एल्गोरिदम का एक परिचय. The MIT Press. doi:10.7551/mitpress/3927.001.0001. ISBN 978-0-262-28001-3.
  6. Barricelli, Nils Aall (1954). "विकास प्रक्रियाओं के संख्यात्मक उदाहरण". Methodos: 45–68.
  7. Fraser AS (1958). "मोंटे कार्लो आनुवंशिक मॉडल का विश्लेषण करता है". Nature. 181 (4603): 208–9. Bibcode:1958Natur.181..208F. doi:10.1038/181208a0. PMID 13504138. S2CID 4211563.
  8. Koza, John R. (1992). Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press. ISBN 978-0-262-11170-6.
  9. G. C. Onwubolu and B V Babu, Onwubolu, Godfrey C.; Babu, B. V. (January 21, 2004). New Optimization Techniques in Engineering. ISBN 9783540201670. Retrieved September 17, 2016.
  10. Jamshidi M (2003). "Tools for intelligent control: fuzzy controllers, neural networks and genetic algorithms". Philosophical Transactions of the Royal Society A. 361 (1809): 1781–808. Bibcode:2003RSPTA.361.1781J. doi:10.1098/rsta.2003.1225. PMID 12952685. S2CID 34259612.
  11. Campelo, Felipe; Aranha, Claus (June 20, 2018). "Ec Bestiary: A Bestiary Of Evolutionary, Swarm And Other Metaphor-Based Algorithms" (in English). doi:10.5281/ZENODO.1293035. {{cite journal}}: Cite journal requires |journal= (help)
  12. Kudela, Jakub (December 12, 2022). "विकासवादी संगणना विधियों की बेंचमार्किंग और विश्लेषण में एक गंभीर समस्या". Nature Machine Intelligence (in English). 4 (12): 1238–1245. arXiv:2301.01984. doi:10.1038/s42256-022-00579-0. ISSN 2522-5839. S2CID 254616518.
  13. "Biological Information". द स्टैनफोर्ड इनसाइक्लोपीडिया ऑफ फिलॉसफी. Metaphysics Research Lab, Stanford University. 2016.
  14. J.G. Diaz Ochoa (2018). "Elastic Multi-scale Mechanisms: Computation and Biological Evolution". Journal of Molecular Evolution. 86 (1): 47–57. Bibcode:2018JMolE..86...47D. doi:10.1007/s00239-017-9823-7. PMID 29248946. S2CID 22624633.
  15. A. Danchin (2008). "कंप्यूटर बनाने वाले कंप्यूटर के रूप में बैक्टीरिया". FEMS Microbiol. Rev. 33 (1): 3–26. doi:10.1111/j.1574-6976.2008.00137.x. PMC 2704931. PMID 19016882.
  16. Burgin, Mark; Eberbach, Eugene (2013). "Recursively Generated Evolutionary Turing Machines and Evolutionary Automata". In Xin-She Yang (ed.). Artificial Intelligence, Evolutionary Computing and Metaheuristics. Studies in Computational Intelligence. Vol. 427. Springer-Verlag. pp. 201–230. doi:10.1007/978-3-642-29694-9_9. ISBN 978-3-642-29693-2.
  17. Burgin, M. and Eberbach, E. (2010) Bounded and Periodic Evolutionary Machines, in Proc. 2010 Congress on Evolutionary Computation (CEC'2010), Barcelona, Spain, 2010, pp. 1379-1386
  18. 18.0 18.1 Burgin, M.; Eberbach, E. (2012). "Evolutionary Automata: Expressiveness and Convergence of Evolutionary Computation". The Computer Journal. 55 (9): 1023–1029. doi:10.1093/comjnl/bxr099.
  19. Eberbach E. (2002) On Expressiveness of Evolutionary Computation: Is EC Algorithmic?, Proc. 2002 World Congress on Computational Intelligence WCCI’2002, Honolulu, HI, 2002, 564-569.
  20. Eberbach, E. (2005) Toward a theory of evolutionary computation, BioSystems, v. 82, pp. 1-19.
  21. Eberbach, Eugene; Burgin, Mark (2009). "Evolutionary automata as foundation of evolutionary computation: Larry Fogel was right". 2009 IEEE Congress on Evolutionary Computation. IEEE. pp. 2149–2156. doi:10.1109/CEC.2009.4983207. ISBN 978-1-4244-2958-5. S2CID 2869386.
  22. Hopcroft, J.E., R. Motwani, and J.D. Ullman (2001) Introduction to Automata Theory, Languages, and Computation, Addison Wesley, Boston/San Francisco/New York
  23. J.J. Merelo and C. Cotta (2007). "Who is the best connected EC researcher? Centrality analysis of the complex network of authors in evolutionary computation". arXiv:0708.2021 [cs.CY].