Revista Art-emis
Căutând calculatoare în celula biologică (2) PDF Imprimare Email
Acad. Gheorghe Păun   
Marţi, 04 Noiembrie 2014 14:30
Acad. Gheorghe Păun, art-emisCalculează natura?
 
Având în minte calculabilitatea în sens Turing, întrebarea devine şi mai restrictivă, dar discuţia dinainte ne oferă limitele între care să căutăm răspunsul: da, cel puţin la nivelul... oamenilor, respectiv, da, oriunde există un proces care poate fi interpretat drept calcul de către un observator potrivit. Opinii care se plasează mai aproape de prima sau de a doua dintre aceste limite pot fi găsite uşor, citez doar una din extremitatea foarte permisivă, ba chiar trecând peste ea, pentru că nici observatorul nu mai este invocat. La începutul capitolului 2, „Molecular Computation”, al volumului colectiv Non-Standard Computation[1], M. Gross spune: „Viaţa este calcul. Fiecare celulă în parte citeşte informaţie dintr-o memorie, o rescrie, primeşte date de intrare (informaţie asupra mediului), procesează date şi acţionează conform rezultatelor tuturor acestor calcule. Pe total, zilioanele de celule care populează biosfera efectuează cu siguranţă mai mulţi paşi de calcul pe unitatea de timp decât toate calculatoarele oamenilor puse la un loc.” În cele ce urmează, adopt o poziţie mai conservatoare şi mai productivă: având în minte definiţia matematică a calculabilităţii, în speţă, abordarea de tip Turing, să privim în jur, în special în biologie, în căutare de idei, suporturi de date, structuri de date, operaţii cu acestea, moduri de control al operaţiilor, arhitecturi de „calculatoare”, care pot sugera:
1 - noi modele de calcul;
2 - căi de folosire mai bună a calculatoarelor existente;
3 - posibilităţi de îmbunătăţire hardware a calculatoarelor existente;
4 - eventual chiar noi tipuri de calculatoare, bazate pe materiale de provenienţă biologică. A se observa ambiţia în creştere de la un obiectiv la altul. De remarcat că în calculul cu A.D.N. s-a încercat încă de la început realizarea de calcule în eprubetă, adresându-se astfel, direct, obiectivul al patrulea. Am avut aici în vedere în primul rând interesul informaticii, dar primul obiectiv acoperă şi cea de a doua direcţie de cercetare menţionată în prefaţa handbook-ului de calcul natural, investigarea în termeni informatici a proceselor care au loc în natură, iar această direcţie ar trebui subliniată explicit, separat, mai ales pentru a anunţa un „efect colateral” al demersului, anume reîntoarcerea la biologie, furnizarea de modele utile biologului. 
 
La ora aceasta, calculul cu A.D.N. a fost foarte puţin de ajutor informaticii (practice), puţin de ajutor biologiei şi mult folositor nanotehnologiei, prin sugerarea unor noi probleme şi teme de cercetare, în timp ce calculul membranar are aplicaţii semnificative şi în informatică şi în biologie, cu promisiuni poate chiar mai mari în cel de-al doilea domeniu, inclusiv în biomedicină şi ecologie. O precizare: „interesul informaticii” acoperă şi interesul teoretic, care nu trebuie să ducă neapărat la aplicaţii, în sensul imediat al termenului. Să ne gândim, de exemplu, la ciliate. În procesul de diviziune, când trec de la genele micronucleare la cele macronucleare, aceste unicelulare duc la bun sfârşit operaţii complicate de tip procesare de liste, şi asta de milioane de ani, cu mult înainte ca informaticienii să dea nume şi să studieze această structură de date. Evident, ciliatele nu la calcule se gândesc în timp ce fac acest lucru, dar, noi, oamenii, putem construi teorii de toată frumuseţea plecând de aici, inclusiv modele de calcul, echivalente uneori cu maşina Turing. Trimit pentru referinţe la monografia „Computation in Living Cells. Gene Assembly in Ciliates”[2], deA. Ehrenfeucht, T. Harju, I. Petre, D.M. Prescott şi G. Rozenberg.
 
O dilemă eternă.
 
Discuţia anterioară ne împinge inevitabil spre lunga dezbatere privind relaţia dintre invenţie şi descoperire. Bibliografia este imensă, citez doar cartea-bibliotecă a acad. Solomon Marcus „Invenţie şi descoperire”[3]. Cât este invenţie şi cât descoperire în informatică - cu particularizare în calculul natural? Nu încerc un răspuns, vor fi atâtea câte puncte de vedere, câte experienţe personale şi câte situări filosofice. Modelele cu care lucrăm sunt de natură matematică, punctul de vedere platonician ne asigură că totul este descoperire, pentru că matematica însăşi este realitate revelată. Da, dar s-a convenit că noţiunile, conceptele, teoriile şi modelele sunt inventate, teoremele descoperite, demonstraţiile inventate. Pentru a continua alternanţa, putem adăuga că aplicaţiile sunt descoperite. Modelele sunt, deci, considerate invenţii. Aş introduce însă o nuanţă. Modelele se aşază pe structuri care există, dar nu au primit încă nume. În plus, spre deosebire de un zid poate fi descoperit şi de un arheolog care ştie ce caută şi de un pomicultor care sapă cu alte motive decât descoperirea unei fundaţii de biserică, un model de calcul nu poate fi „văzut” într-o celulă decât de un informatician care are deja în minte modele de calcul. De pildă, procesele numite de biologi simport şi antiport există, funcţionează dintotdeauna în modul lor ingenios, dar ele nu calculează decât pentru matematicianul care caută un model de calcul bazat pe trecerea de „obiecte” dintr-un compartiment al celulei în altul. „Calcul prin comunicare”, am căutat o vreme aşa ceva, intuind că există, şi am avut rezolvarea atunci când un biolog (Ioan Ardelean) mi-a vorbit despre operaţiile de simport şi antiport. Un model mai degrabă descoperit decât inventat. Dar, o descoperire care nu s-a făcut prin scoaterea la lumină a obiectului descoperit, ci prin suprapunerea pe o felie de realitate a unui model intuit, similar unor modele existente deja şi actualizat în dialogul dintre limbajul formal şi realitate. Invenţie şi descoperire în acelaşi timp.
 
O altă nesfârşită discuţie
 
Nu continui cu alte întrebări la fel de fluide, menite a-şi păstra interesul în ciuda oricâtor răspunsuri. (De pildă, dându-ne prilejul de a ne întreba cât este ştiinţă şi cât artă în informatică, Donald Knuth îşi intitula un impresionant tratat, planificat a apărea în multe volume, „Arta programării calculatoarelor”.) Ating însă un alt subiect sensibil, cu care am fost confruntat uneori sub forma întrebării gazetăreşti, dar nu lipsite de noimă: „În cercetările dumneavoastră legate de celulă, v-aţi întâlnit cu Dumnezeu?” Evident, se aşteaptă altceva decât un răspuns de tipul „da” sau „nu” şi la fel de evident este că, dacă luăm întrebarea în serios, eşuăm pe nisipurile mişcătoare ale opţiunilor personale, credinţei, metaforei.
 
Dacă Dumnezeu este ordinea, organizarea, binele, „Dumnezeul lui Spinoza, care se manifestă prin armonia legilor universului”, cum ar spune Einstein, atunci da, Îl întâlnesc continuu, şi în celule şi în afara lor. Mai mult: în titlul unei cărţi traduse la Humanitas, în 2011, Mario Livio se întreabă „Este Dumnezeu matematician?” Răspund în stil platonician: nu, Dumnezeu nu este matematician, El este chiar matematica („gramatica” lumii) - deci, iarăşi, mă întâlnesc zilnic cu El. Dacă însă Dumnezeu este ceea ce-mi propune Cartea, atunci mă aliniez lui Galilei, care, într-o scrisoare către don Benedetto Castelli, de la 21 decembrie 1613, spunea (reiau după Edmond Constantinescu, Dumnezeu nu joacă zaruri, Editura MajestiPress, Arad, 2008; din păcate, scrisoarea respectivă nu apare în volumul Galileo Galilei, „Scrisori copernicane”, Humanitas, 2010): „Dumnezeu a scris două cărţi, Biblia şi Cartea naturii. Biblia a fost scrisă în limbaj omenesc. Cartea naturii a fost scrisă în limbajul matematicii. De aceea, limbajul Bibliei este nepotrivit pentru a vorbi despre natură. Cele două trebuie studiate independent una de alta.” Cartea naturii, mai adăuga Galilei, ne învaţă „cum merge Cerul”, Biblia ne învaţă „cum să mergem la Cer”.
 
După secole de separări - mai degrabă dogmatice, de ambele părţi -, alternând cu încercări - multe dintre ele patetice - de reconciliere a ştiinţei cu religia, spusele lui Galilei pot părea simpliste sau conformiste, dar ele taie cu eficienţă un mereu regenerat nod gordian. Consemnez, la extrema sofisticată, situaţia oarecum simetrică a lui Francis S. Collins, nu numai contemporan cu noi, dar şi legat de subiectul discursului de faţă: el a fost director al National Human Genome Research Institute, liderul faimosului proiect al genomului uman. În 2006, a publicat o carte mult discutată, tradusă în 2009 la Editura Curtea Veche, intitulată „Limbajul lui Dumnezeu”. Sintagma a fost folosită şi de Bill Clinton, atunci când, în 2001, a anunţat completarea „celei mai importante şi mai impresionante hărţi întocmite vreodată de omenire”, secvenţierea celor în jur de trei miliarde de „litere” ale „cărţii vieţii”. Chiar dacă titlul ar sugera asta, Collins nu este însă nici creaţionist şi nici adept al proiectării inteligente, ci „teist evoluţionist”, iar concluzia sa este că „Dumnezeul Bibliei este şi Dumnezeul genomului”[4], iar „ştiinţa poate fi o formă de religiozitate” [5]. O altă poziţionare confortabilă - dar în cele ce urmează rămân alături de Galilei...
 
Limitele calculatoarelor actuale
 
Moda calculului natural, cu deosebire a celui inspirat din biologie, nu are numai motivaţia interioară, a multelor direcţii de cercetare explorate în ultimele decenii şi dovedite a fi interesante teoretic şi utile, sau măcar promiţătoare, practic, ci are şi o motivare exterioară, legată de limitele calculatoarelor actuale, unele dintre ele resimţite tot mai acut. Calculatoarele sunt invenţia cu cel mai mare impact a secolului al XX-lea, cu implicaţii resimţite în toate componentele vieţii noastre, din comunicare în funcţionarea sistemului bancar, din sănătate în armată, de la numeroasele gageturi care ne înconjoară la internet. Cu toate acestea - de fapt, tocmai pentru asta - calculatoarele pe care le avem acum au limitări de care ne lovim tot mai des (cu menţiunea că există şi aici, ca în mai toate lucrurile, ceva bine în rău şi ceva rău în bine: calculatoare puternice pot fi folosite şi în scopuri bune, dar şi în scopuri rele - cum ar fi spargerea de servere, de sisteme de criptare, pe care se bazează comunicarea protejată). Să gândim însă pozitiv şi să notăm că există multe lucruri pe care calculatoarele nu le pot face încă, dar pe care ne-ar plăcea, sau chiar folosi, să le facă.
 
Procesoarele devin tot mai rapide şi mai compacte, capacitatea memoriei lor tot mai largă. Da, dar până când? A fost mult repetată aşa-numita lege a lui Moore, enunţată în 1965 de Gordon A. Moore, cofondator al Intel Corporation, cu referire la numărul tranzistorilor de pe un circuit integrat, extinsă apoi la costul pe unitatea de informaţie memorată, formulată uneori şi în forma „în fiecare an, calculatoarele devin de două ori mai mici, de două ori mai ieftine şi de două ori mai puternice”. Exponenţial, pe fiecare dintre cele trei dimensiuni, tinzând deci rapid spre limita cuantică în dimensiunea procesoarelor. Chiar la nivelul mai tehnic, confirmat pentru câteva decenii, al dublării capacităţii procesoarelor, legea - de fapt, o observaţie, urmată de o previziune - a fost ajustată, cu dublarea prevăzută mai întâi la un an şi jumătate, apoi la trei ani. Încă nu e rău, dar nu va putea continua prea mult nici în acest ritm. Problema e însă alta. Progrese se fac continuu şi se vor mai face la nivel tehnologic, dar calculatorul actual are limite principiale, peste care nu poate trece numai prin progrese tehnologice. Recunoaşte amprente, dar nu feţe de persoane, joacă şah la nivel de campion mondial, dar (pe tabla standard, nu pe table reduse) „GO”joacă numai la nivel de începător, demonstrează teoreme de calculul propoziţiilor, dar nu trece mult peste acest nivel (şi nici nu distinge între o teoremă trivială şi neinteresantă şi una care merită a fi pusă pe hârtie). Toate acestea şi multe altele, în primul rând pentru că este calculator... Turing-von Neumann. Secvenţial adică. Uniprocesor. (Mai are şi alte slăbiciuni, mai puţin restrictive în aplicaţiile curente - de pildă, este un destul de mare consumator de energie.) Calculează tot ce se poate calcula, dar asta în principiu, la nivelul competenţei. Întâlnim şi un aspect istoric aici. La început ne-a interesat ce se poate calcula, unde este frontiera calculabilităţii, a decidabilităţii algoritmice. Chestiuni fundamentale matematic, dar în aplicaţii devine relevantă performanţa, resursele cerute de un calcul dat, ce putem calcula acum şi aici, în condiţii precizate. Câtă electricitate consumă un calculator sau cât spaţiu ocupă nu mai sunt întrebări de interes curent, aşa cum erau prin anii ’60 (sunt încă de interes în condiţii speciale, în cosmos, robotică), dar în cât timp primim răspunsul la o problemă sau rezultatul unui calcul este un aspect crucial în orice aplicaţie. Şi, spuneam, nu promisiunea tehnologică este relevantă aici, ci abordarea matematică, frontiera teoretică dintre fezabil şi nefezabil.
 
O mare provocare: complexitatea exponenţială
 
O puternică teorie s-a dezvoltat asupra acestui subiect, teoria complexităţii calculului, care a definit încă de la început ca fiind fezabile problemele care se pot rezolva în timp polinomial în raport cu dimensiunea datelor de intrare. (Exemplu: avem un graf - o hartă cu localităţi şi şosele între ele - cu „n”noduri. În cât timp poate un algoritm să ne spună dacă graful conţine un drum hamiltonian, adică unul care trece prin toate nodurile, o singură dată prin fiecare? Dacă acest timp este mărginit de un polinom în n, atunci spunem că algoritmul este de complexitate polinomială.) Problemele de complexitate exponenţială, care cer un timp de tip 2n, 3n etc. pentru o intrare de dimenisune „n”, au fost considerate nefezabile. Prima clasă a fost notată cu P, a doua cu NP, abrevierile venind de la „polinomial”, respectiv, „polinomial nedeterminist”: o problemă este în NP dacă putem decide în timp polinomial dacă o soluţie propusă pentru ea este cu adevărat soluţie sau nu („ghicim” o soluţie, apoi verificăm dacă ea este corectă; mai tehnic, soluţia este găsită de o maşină Turing nedeterministă, care are mai multe alternative la un pas de calcul şi contăm pe faptul că alege totdeauna calea cea bună, fără a examina exhaustiv posibilităţile). Pentru detalii, se poate consulta, de exemplu, cartea clasică a lui C.H. Papadimitriu, Computational Complexity, Addison-Wesley, 1994.
 
Să amintim şi că în clasa NP există o subclasă, a „celor mai grele probleme din NP”, problemele NP-complete; o problemă este de acest tip dacă orice altă problemă din NP se poate reduce la ea în timp polinomial. Prin urmare, dacă o problemă NP-completă s-ar putea rezolva în timp polinomial, atunci toate problemele din NP ar avea o astfel de rezolvare. Problemele folosite în criptografie sunt de obicei NP-complete.
 
O teorie foarte frumoasă, care, în varianta de bază, are însă trei slăbiciuni: (1) încă nu ne poate spune dacă P = NP, dacă nu cumva soluţii polinomiale se pot găsi şi pentru problemele pe care acum le considerăm de complexitate exponenţială, (2) teoria nu ţine seama de „detalii” cum ar fi coeficienţii şi gradul polinoamelor şi care, practic, pot avea o influenţă crucială asupra timpului de calcul, şi (3) teoria ia în seamă cazurile extreme, este de tip worst case, numără paşii de rezolvare a celor mai dificile probleme dintr-o clasă, în timp ce realitatea se plasează de cele mai multe ori la mijloc, spre „medie”. Iată un exemplu cu relevanţă practică: problemele de programare liniară sunt în P, pentru că algoritmul elipsoidal al lui Leonid Khachian (1979) rezolvă problema în timp polinomial, dar polinomul cu pricina este atât de complex, încât în practică, în majoritatea cazurilor, acest algoritm este mai puţin eficient decât vechiul algoritm simplex, propus în vremea celui de-Al Doilea Război Mondial şi considerat unul dintre primii zece cei mai importanţi algoritmi imaginaţi vreodată, chiar dacă el este, teoretic, de complexitate exponenţială.
 
Din aceste motive, teoria complexităţii s-a rafinat şi diversificat (complexitate medie, algoritmi aproximativi - ultimii având o directă legătură cu calculul natural), iar definiţia fezabilităţii s-a redefinit cu mai multă grijă. Oricum, convingerea este transformată în slogan: calculatoarele Turing-von Neumann nu pot rezolva în timp rezonabil probleme de complexitate exponenţială. Interesul faţă de problema dacă P = NP este enorm. Pe de o parte, majoritatea problemelor practice (netriviale) sunt în clasa NP, deci sunt nefezabile, nu pot fi rezolvate eficient, pe de alta, majoritatea sistemelor criptografice în uz se bazează pe probleme de complexitate exponenţială, rezolvarea lor polinomială putând duce la spargerea sistemelor. Problema este deschisă încă din 1971 (a fost formulată de Stephen Cook), iar în anul 2000 a fost inclusă de Clay Mathematical Institute, Cambridge, Massachusetts, în lista celor şapte „probleme ale mileniului”, rezolvarea ei fiind recompensată cu un milion de dolari.
 
Dacă importanţa problemei pentru informatica teoretică nu poate fi supraestimată, nu este clar care ar putea fi urmarea practică a unei soluţii, indiferent care ar fi aceasta. Există multe discuţii pe această temă[6].Dacă se va arăta că P este strict inclus în NP, aşa cum majoritatea informaticienilor (dar nu toţi!) cred, atunci nimic nu se va schimba la nivelul informaticii practice. Dacă egalitatea se va demonstra neconstructiv sau constructiv, dar într-o manieră nefezabilă (vor fi găsite soluţii polinomiale la probleme din NP, dar cu polinoame de grade mari sau cu coeficienţi uriaşi), urmările practice vor fi nesemnificative (dar va începe cursa pentru găsirea unor soluţii ad-hoc, pentru care timpul să fie măsurat de polinoame mai cumsecade). Dacă, însă, va fi obţinută o trecere necostisitoare de la NP la P, atunci urmările pentru informatica practică pot fi spectaculoase - în bine, exceptând criptografia, unde urmările vor fi dramatice.
 
La nivelul software-ului în uz, mai există o problemă, pe care o menţionez în formularea lui Edsger W. Dijkstra (din „The end of computer science?”, articolul citat mai devreme): „Cele mai multe dintre sistemele noastre [de programe] sunt mult mai complicate decât nivelul la care ar putea fi considerate sănătoase, sunt prea haotice pentru a fi folosite cu încredere şi confortabil. Clientul mediu al industriei informatice a fost servit atât de prost, că el se aşteaptă în fiecare moment ca sistemul lui să cadă.” Lipsa de robusteţe a sistemelor informatice complexe este o preocupare la fel de actuală şi azi precum era în anul 2000. Pentru a ilustra faptul că nu prin progrese tehnologice putem face faţă complexităţii exponenţiale, să examinăm un caz simplu: să considerăm o problemă a cărei complexitate este de tip 2n, o problemă de grafuri, de exemplu, care poate fi rezolvată de un calculator obişnuit pentru, să zicem, 500 de noduri, în aproximativ un sfert de oră; să presupunem că tehnologia ne oferă un calculator de 1.000 de ori mai rapid, un pas înainte cu totul netrivial şi nu tocmai frecvent. Este adevărat că problemele pe care le rezolvam mai devreme într-un sfert de oră (aproximativ o mie de secunde) se vor rezolva acum într-o secundă, dar, dacă încercăm grafuri cu mai mult de 500 de noduri, constatăm că progresul este derizoriu: cu noul calculator, vom rezolva problema, într-un sfert de oră, numai pentru grafuri cu cel mult 510 noduri. Asta, pentru simplul motiv că 210 este deja mai mare de 1000. Iar dacă problema ar fi de complexitate 3n, atunci ne-am opri pe la 506 noduri...
 
Promisiunile calculului natural
 
Pentru a face faţă problemelor de complexitate exponenţială, dar şi pentru alte motive pe care le voi aminti mai târziu, informatica are mai multe posibile soluţii, majoritatea legate de calculul natural, ba chiar de biocalculabilitate: (1) căutarea de calculatoare masiv paralele, (2) căutarea de calculatoare/calcule nedeterministe, (3) căutarea de soluţii aproximative, (4) căutarea de soluţii probabiliste. Toate aceste patru direcţii au fost explorate şi în cadrul informaticii „standard”, atât în teorie, cât şi în tehnologia de tip electronic. Calculatoare multiprocesor sunt deja disponibile de mai mulţi ani - dar fără a ajunge la paralelismul masiv de la care se aşteaptă rezolvarea problemelor complexe. Dacă un număr mare de procesoare sunt puse împreună, apar alte probleme, unele inginereşti (disiparea de căldură), altele, mai importante poate, teoretice, legate de sincronizarea procesoarelor. O ramură distinctă a complexităţii calculului se ocupă de complexitatea sincronizării[7]. Una dintre concluziile acestei teorii spune că, de la un număr de procesoare în sus, sincronizarea (măsurată prin numărul de biţi necesari în acest scop) devine mai costisitoare decât calculul propriu-zis, ceea ce sugerează renunţarea la sincronizare, dar de aici apar alte probleme, pentru că nu suntem încă obişnuiţi cu programarea de calculatoare asincrone. Cu atât mai puţin ştim cum să construim şi să folosim „calculatoare nedeterministe”. Foarte atrăgătoare sunt însă ultimele două dintre cele patru soluţii şi aici intervine „forţa brută” a calculatoarelor. Ea se aplică mai ales problemelor complexe de optimizare: explorând la întâmplare spaţiul soluţiilor posibile, suficient de mult timp, cu o mare probabilitate putem da peste soluţii optime sau aproape de cele optime. Soluţii aproximative, eventual cu o probabilitate cunoscută de a fi optime. Aici intră promiţător în scenă calculul natural. Mă voi referi de acum înainte numai la cel de inspiraţie biologică.
 
Într-o celulă, un număr imens de „chimicale” (ioni, molecule simple, macromolecule, proteine, molecule de A.D.N. şi A.R.N.) evoluează împreună, în soluţie apoasă, la un înalt nivel de paralelism şi, în acelaşi timp, de nedeterminism, într-un mod robust, coordonat, făcând faţă cu succes solicitărilor care vin dinspre mediu şi căpătând în timp caracteristici foarte atrăgătoare, de tip adaptare, învăţare, autoreparare, reproducere. Multe alte detalii sunt de interes, cum ar fi reversibilitatea unor procese sau eficienţa energetică, cu numărul de operaţii per Joule mult mai ridicat decât în cazul procesării electronice a informaţiei (ştergerea consumă energie, de aceea sunt de interes calculatoare reversibile[8]. Se pare, deci, că natura a perfecţionat de-a lungul a patru miliarde de ani de evoluţie procese (şi suporturi materiale pentru acestea) care aşteaptă să fie identificate şi înţelese de informaticieni, pentru a învăţa noi metode şi paradigme de calcul, eventual pentru a construi noi tipuri de calculatoare. Iar informaticienii au trecut de multă vreme la lucru. Doar câţiva paşi pe acest drum, pe scurt: Algoritmii genetici, ca mod de a organiza căutarea prin spaţiul soluţiilor, imitând evoluţia darwiniană, pentru a rezolva probleme de optimizare. Generalizarea la calculul evolutiv şi programarea evolutivă. Reţelele neurale, încercând să imite funcţionarea creierului uman, tot pentru căutarea de soluţii aproximative, mai ales pentru probleme de recunoaştere a formelor, de învăţare. Ceva mai târziu, calculul cu A.D.N., care a propus şi un nou hardware, masiv paralel, folosind ca suport de calcul molecula de A.D.N.. Şi mai aproape de noi, calculul membranar, luând ca punct de plecare celula ca atare şi populaţiile de celule.
 
La rândul său, calculul evolutiv, în general, zona algorimilor aproximativi inspiraţi din biologie, s-a ramificat spectaculos, în direcţii dintre cele mai diverse (şi, uneori, pitoreşti; păstrez denumirile englezeşti): immune computing, ant colony algorithm, bee colony algorithm, swarm computing, water flowing computing, cultural algorithm, cuckoo algorithm, strawberry algorithm - şi e foarte probabil să mai fi apărut şi altele între timp... Este important să subliniem faptul că toate ramurile calculului natural menţionate mai devreme, cu excepţia calculului cu A.D.N., sunt menite implementării pe calculatorul obişnuit, spre mai eficienta lui folosire, ele propun noi tipuri de software, nu modificarea arhitecturii, a hardware-ului.
 
 - Va urma -
 
--------------------------------------------------------
 
[1] T. Gramss, S. Bornholdt, M. Gross, M. Mitchel, Th. Pellizzari, eds., Wiley-VCH, Weinheim, 1998.
[2] A. Ehrenfeucht, T. Harju, I. Petre, D.M. Prescott şi G. Rozenberg,Springer-Verlag, 2004.
[3] Solomon Marcus „Invenţie şi descoperire”, Cartea Românească, 1989.
[4] Francis S. Collins, Limbajul lui Dumnezeu, Bucureşti, Editura Curtea Veche, p. 222.
[5] Ibidem, pag. 240
[6] S. Cook, „The importance of the P versus NP question”, Journal of the ACM, vol. 50, 2003, pp. 27-29.
[7] Hromkovic, Communication Complexity and Parallel Computing, Springer-Verlag, 1997.
[8] Landauer, „Irreversibility and heat generation in the computing process”, IBM Journal of Research and Development, vol. 5, 1961, pp. 183-191, şi C.H. Bennett, „Logical reversibility of computation”, Idem, vol. 17, 1973, pp. 525-532.
 
 
footer