Oktatási projekt sakk és mesterséges intelligencia. Néhány ötlet mesterséges intelligencia írásához sakkhoz. sakk számítógépes intelligencia algoritmus

A meccs elveszett: számítógép kontra ember.

Kreatív gondolkodás, logika, tapasztalat - olyan tulajdonságok, amelyek lehetővé tették az ember számára, hogy vezessen az „ember-gép” csatában. Úgy tűnt, hogy ezek az előnyök mindig az ember titkos fegyverei lesznek, és a számítógép a „felzárkózás” szerepét fogja betölteni.

De nagyon kevés időbe telt, mire a mesterséges intelligencia utoléri, és sok területen örökre felülmúlja az embereket, beleértve az intellektuális szórakoztatást is.

A mesterséges intelligencia legyőzi az embert: hol és hogyan

Rubik kocka
Ezt a rejtvényt az egész világon ismerik. Emberek milliói próbálják megoldani a feladatot és helyesen összeállítani a kockát, sőt, vannak, akik még az összeszerelés sebességében is versenyeznek. Az emberrekordot a 14 éves amerikai Lucas Etter állította fel, aki 4,904 másodperc alatt oldotta meg a rejtvényt. Hihetetlen, nem? Ezt az eredményt azonban felülmúlta a két lelkes Jay Flatland és Paul Rose által megalkotott robot: a robot eredménye 1,047 másodperc volt.


A beépített kameráknak köszönhetően, amelyekből négy van, a számítógép kiértékeli a pozíciót, és kiválasztja a legjobb akcióalgoritmust. A rendszer a Kotzebue formulán alapul (20 mozdulattal történő összeszerelés). A Rubik-kockát aligha tud valaki 1 másodpercnél rövidebb idő alatt megoldani.
0:1 a mesterséges intelligencia javára.

"Othello"
A játék népszerűségének csúcsa a múlt század 70-es éveinek elején következett be. A játék lényege, hogy zsetonokat helyezünk a játéktérre (8x8 cella): saját színű zsetonokkal kell blokkolni az ellenfél zsetonjainak sorait mindkét oldalon, majd a zsetonok színe megváltozik és az ellenfélhez kerül. A győzelem azé, aki a legnagyobb területet foglalta el.


Az 1980-as Othello világbajnok Hiroshi Inoue volt, aki könnyedén, 5-1-re legyőzte a móri programot.
Később a programok megtanulták kiszámolni az ellenfél mozdulatait (kb. 25 lépéssel), és amikor 1997-ben a jelenlegi világbajnok Takeshi Murakami visszavágón a Logistello rendszerrel szembesült, az eredmény zúzós 0:6 lett a szoftver javára.

Backgammon
A mesterséges intelligencia a backgammonban az emberekkel szembeni előnyét Hans Berliner levelező sakk-világbajnoknak (és mások is) köszönheti, aki a BKG 9.8-as programot írta. 1979-ben pedig a program erősebbnek bizonyult, mint a backgammon világbajnok Luigi Villa.


Állítólag abban a játékban szerencséje volt a számítógépnek (jó kocka esett többször is), de senki más nem akart harcolni egy megismételt visszavágón, pláne, hogy azóta többször is javítottak a szoftveren.

Sakk
A sakkrendszereket a huszadik század közepén kezdték fejleszteni, a fejlesztések az IBM-hez tartoztak. De mivel a program komoly és hosszadalmas számításokat igényelt, ezt a vállalkozást 30 évvel el kellett halasztani. 1996-ban a „sakk agy” – a Deep Blue számítógép – szembekerült Garri Kaszparovval.


A meccs a férfi javára végződött: 3 győzelem, 2 döntetlen, 1 vereség. Egy évvel később a meccset megismételték, és ezúttal a Deep Blue felkészültebb volt. Természetesen a rendszer másodpercenként 200 millió pozíciót értékelt. És bár Harry még később akart kapni, az IBM ezt értelmetlennek tartotta visszautasította.

Dáma (a dáma egy fajtája)
Marion Tinsley bajnok ellenőr volt pályafutása során. És amikor 1992-ben találkozott az Albertai Egyetemen (Kanada) kifejlesztett rendszerrel, a győzelem az övé volt. 39 meccsből 4 győzelem, 2 vereség és 33 döntetlen.


Két évvel később visszavágóra került sor, de Tinsley egészségügyi problémák miatt visszalépett a versenytől (elutasítása idején 6 döntetlen volt), és a győzelem a rendszeré lett. Azóta a mesterséges intelligencia jelentősen megerősödött: 2007-ben a kanadaiak bejelentették egy ideális rendszer megalkotását, és ezt senki sem próbálja felülmúlni a dámban.

Firkál
A számítógép diadala ebben a játékban már az első körben könnyű volt: a világbajnok David Boyce-t 2006-ban verte meg robotos riválisa, Quackle.


Ez a program egyébként elérhető az interneten, és versenyezhet vele, és talán győzelmet hoz a „Man” csapatnak.

Megy
Ez a játék több mint kétezer évvel ezelőtt jelent meg az ókori Kínában, de a játékban szerzett hosszú tapasztalat ellenére az emberek még mindig veszítettek. A pályán (19x19) két játékos lerakja a köveit (fekete/fehér), aki több pontot szerez (egy vonalban elhelyezett zsetonokat számítanak bele), az nyer. Egyrészt minden egyszerű, de az érdeklődés a lehetséges lehetőségek és lépések sokféleségében rejlik.


A (Google égisze alatt létrejött) AlphaGo fejlesztői számára is érdekes volt egy olyan rendszer létrehozása, amely több ezer opciót képes kiszámítani. Először a mesterséges intelligencia más szoftverekkel próbálta ki magát, és amikor az 500 játékból 499 az AlphaGo-nak szólt, akkor a háromszoros Európa-bajnok Fan Hui-val szállt szembe. A bajnoknak esélye sem volt: 5:0.

tévé
Szeretsz kérdésekre válaszolni a tévés vetélkedőkön? Az IBM Watson robotjának fejlesztői szintén nem tudtak ellenállni, és 2011-ben Watson részt vett a „Jeopardy!” szellemi televíziós játékműsorban. Annak ellenére, hogy ellenfelei a show rekorderei – Brad Rutter és Ken Jennings – voltak, ő nyert, a nyert millió dollárt pedig jótékony célokra ajánlotta fel.


És bár a számítógép már megmutatta intellektuális és logikai fölényét az emberekkel szemben, tovább fejlődik. Így az Alibaba Group és a Microsoft (a fejlesztések párhuzamosan zajlottak) bevezették a mesterséges intelligenciát, amely az olvasott információk megértésében erősebbnek bizonyult, mint az ember.
A Stanford Egyetem tesztje több mint 100 ezer kérdésből áll, amelyek a Wikipédia-könyvtár ötszáz cikkén alapulnak.

A legjobb pontszám egy személyre 82,304 pont, az Alibaba eredménye 82,44, a Microsoft neurális hálózaté 82,605. Az eredmények azt mutatják, hogy a mesterséges intelligencia bármilyen kérdésre képes nagy pontossággal válaszolni, ami azt jelenti, hogy a technológiák segítségével ki lehet szolgálni az ügyfeleket, betegeket, múzeumlátogatókat stb.

A számítógépes játékokat is magával ragadta a program. A program verte a programot: ki gondolta volna, hogy ez a jövő ilyen közel van? A népszerű Quake III játék, ahol a játékosok gladiátorok, nagyon népszerű az e-sportban. De itt nem emberek voltak a legjobbak, hanem a Google egyik részlege által létrehozott DeepMind robotok csapata. És bár a csatát csökkentett változatban bonyolították le, a számítások szerint 73%-os eltéréssel, a bot bármilyen versenyt megnyert volna.


Veszélyes-e a mesterséges intelligencia ilyen felsőbbrendűsége vagy sem? Senki nem tud biztosan válaszolni. És végül nem ez a válasz lesz a kulcs, mert nem az a lényeg, hogy az ember alacsonyabb rendű egy számítógépnél, hanem az, hogy ezt a potenciált a saját hasznunkra tudjuk-e használni. Amint látjuk, a mesterséges intelligencia legyőzi az embereket, és nem hagy esélyt a győzelemre.




A kutatás tárgya és a fejlesztés célja A „mesterséges intelligencia” tudományának vizsgálati tárgya az emberi gondolkodás. A tudósok arra a kérdésre keresik a választ: hogyan gondolkodik az ember? A kutatás célja az emberi intelligencia modelljének megalkotása és számítógépen való megvalósítása. A „mesterséges intelligencia” tudományának vizsgálati tárgya az emberi gondolkodás. A tudósok arra a kérdésre keresik a választ: hogyan gondolkodik az ember? A kutatás célja az emberi intelligencia modelljének megalkotása és számítógépen való megvalósítása.


Példatartományok Sok más emberi tevékenység létezik, amelyeket nem lehet előre beprogramozni. Például: sakk és egyéb játékok, vers- és zeneírás, szövegek fordítása egyik nyelvről a másikra, robotika, kriminalisztika (ujjlenyomat-azonosítás), orvosi diagnosztika. Sok más emberi tevékenység is létezik, amelyeket nem lehet előre beprogramozni. Például: sakk és egyéb játékok, vers- és zeneírás, szövegek fordítása egyik nyelvről a másikra, robotika, kriminalisztika (ujjlenyomat-azonosítás), orvosi diagnosztika.


Informális előadó A mesterséges intelligencia rendszerek fejlesztői pontosan arra törekednek, hogy egy gépet, akárcsak az embert, önállóan építse fel cselekvési programját a feladat feltételei alapján. Mondhatjuk úgy is: a cél az, hogy a számítógépet formális előadóból intellektuális előadóvá alakítsuk. A mesterséges intelligencia rendszerek fejlesztői pontosan arra próbálnak megtanítani egy gépet, mint az embert, hogy a feladat feltételei alapján önállóan építse fel cselekvési programját. Mondhatjuk úgy is: a cél az, hogy a számítógépet formális előadóból intellektuális előadóvá alakítsuk.








Modellezés Két fő feladat az intelligens rendszerek számítógépen történő létrehozása során: Két fő feladat az intelligens rendszerek számítógépen történő létrehozása során: -tudásmodellezés (tudás formalizálására szolgáló módszerek kidolgozása a számítógép memóriájába, mint tudásbázisba beviteléhez); -tudásmodellezés (a tudás formalizálásának módszereinek kidolgozása, hogy azok a számítógép memóriájába, mint tudásbázisba kerüljenek); -érvelés modellezése (különböző problémák megoldása során az emberi gondolkodás logikáját imitáló számítógépes programok készítése). -érvelés modellezése (különböző problémák megoldása során az emberi gondolkodás logikáját imitáló számítógépes programok készítése).


Szakértői rendszerek A mesterséges intelligencia rendszerek egyik típusa az Expert rendszerek. A mesterséges intelligencia rendszerek egyik típusa az Expert Systems. A szakértői rendszerek célja a felhasználók tanácsadása és a döntéshozatalban való segítségnyújtás. A szakértői rendszerek célja a felhasználók tanácsadása és a döntéshozatalban való segítségnyújtás.

Sajnos nincs jobb sakk-algoritmus, mint túl sok pozíciót kipróbálni. Igaz, a keresés sorrendben van optimalizálva (és több is), de akkor is nagy keresés. A válaszlépések kereséséhez egy fa épül fel, amelynek gyökerében az eredeti lépés, élek - válaszlépések, csomópontok - új pozíciók találhatók.

Könnyen megmagyarázható, hogyan választják ki a következő lépést az elemi algoritmusokban. A körödben kiválasztod azt a lépést (szerinted), amely a legnagyobb hasznot hozza (maximalizálja a hasznot), és a következő lépésnél az ellenfeled megpróbálja kiválasztani azt a lépést, amelyik a legtöbb hasznot hozza (maximálja a hasznát és minimalizálja a tiédet). Az ilyen elvű algoritmust minimaxnak nevezzük. Minden szakaszban hozzárendel egy pozíciópontszámot a fa minden csomópontjához (erről később), és a körödben maximalizálod, az ellenfeled körében pedig minimalizálod. Működés közben az algoritmusnak át kell mennie a fa összes csomópontján (vagyis a játék összes lehetséges játékpozícióján), vagyis időben teljesen alkalmatlan.
Következő fejlesztése az alfa-béta metszés (elágazó és kötött módszer).

A névből az következik, hogy az algoritmus két paraméter szerint vág le - az alfa és a béta. A vágás fő ötlete az, hogy most megtartjuk a vágási intervallumot (alsó és felső határ - alfa és béta - a K.O.), és nem vesszük figyelembe az összes olyan csomópont becslését, amely nem esik az alábbi intervallumba ( mivel ezek nem befolyásolják az eredményt - ezek egyszerűen rosszabb lépések, mint a már talált), és maga az intervallum szűkül, ha jobb lépéseket találunk. Bár az alfa-béta vágás sokkal jobb, mint a minimix, működési ideje is nagyon hosszú. Ha feltételezzük, hogy a játék közepén megközelítőleg 40 különböző lépés van az egyik oldalon, akkor az algoritmus ideje O(40^P) becsülhető, ahol P a mozgásfa mélysége. Természetesen a minimax-nál előfordulhat olyan mozdulatok mérlegelési sorrendje, amikor nem csinálunk vágást, akkor az alfa-béta vágásból egyszerűen minimax lesz. Legjobb esetben az alfa-béta metszés elkerülheti a minimax minden lépésének gyökerének ellenőrzését. A hosszú munkaidő elkerülése érdekében (ilyen nagy az algoritmus bonyolultsága) a fában valamilyen fix értéket keresünk, és ott kiértékeli a csomópontot. Ez a becslés nagyon jó közelítés egy csomópont valós becsléséhez (vagyis a fa végéig keresünk, és akkor az eredmény „nyer, veszít, döntetlen”). A csomópontok értékelésével kapcsolatban egyszerűen egy csomó különböző módszer létezik (a cikk végén található hivatkozásokban olvashat). Röviden, természetesen megszámolom a játékos anyagát (egy rendszer szerint - egész számokban gyalog - 100, lovag és püspök - 300, bástya - 500, királynő - 900; másik rendszer szerint - valós egy részében) + pozíció az adott játékos táblája. Ami a pozíciót illeti, itt kezdődik a sakkírás egyik rémálma, hiszen a program sebessége elsősorban az értékelési funkciótól, pontosabban a pozíció értékelésétől függ majd. Már nagyon sokan vannak itt. Páros túrához a játékoshoz +, a király lefedéséhez a mancsaival +, a tábla másik végéhez közeli gyaloghoz + stb., és mínusz a lógó figurák helyzete, nyitott király stb. stb. - egy csomó tényezőt írhatsz. A játékban elfoglalt pozíció értékeléséhez a lépést végrehajtó játékos pozíciójának becslése készül, és ebből levonják az ellenfél megfelelő pozíciójának becslését. Ahogy mondani szokták, egy kép néha többet ér ezer szónál, és talán egy pszeudo C# kód is jobb lesz, mint a magyarázat:

Enum CurrentPlayer (én, ellenfél); public int AlphaBetaPruning (int alfa, int béta, int mélység, CurrentPlayer currentPlayer) ( // az aktuális csomópont int értéke / minden lépést generál a játékosnak, amelyik körben lépni kell / /az ezzel a módszerrel generált lépések mentesek a lépésektől // miután megtette, melyik játékos kerülne csekkbe Lista mozog = GenerateAllMovesForPlayer(currentPlayer); // átugrás a mozdulatokon keresztül foreach mozdulat lépésekben ( MakeMove(move); ++ply; // Ha a mélység továbbra is fennáll, folytassa a keresést mélyebben if (depth > 1) value = -AlphaBetaPruning (-béta, -alpha, mélység - 1, ellenfélPlayer // Ha nem maradt mélység (levél csomópont), értékelje ki a pozíció értéket = EvaluatePlayerPosition(opponentPlayer()) ( // Ez a lépés); annyira jó, hogy a többi fa levágását okozta if (érték >= béta) return béta alfa = érték) ) if (mozgások.Szám == 0) ( // ha nincs mozgás, akkor a pozíció sakkmatt vagy if ( IsInCheck(currentPlayer) )) return (-MateValue + ply); else return 0; )

Azt hiszem, néhány magyarázat a kóddal kapcsolatban nem lenne felesleges:

  • A GetOppositePlayerTo() egyszerűen megváltoztatja a CurrentPlayer.Me-t CurrentPlayer.Opponent-re és fordítva
  • A MakeMove() elvégzi a következő lépést a mozgáslistából
  • A ply egy globális változó (az osztály része), amely tartalmazza az adott mélységben végrehajtott félmozdulatok számát
Példa a módszer használatára:

( ply = 0; nodesSearched = 0; int score = AlphaBetaPruning (-MateValue, MateValue, max_depth, CurrentPlayer.Me); )
ahol a MateValue meglehetősen nagy szám.
A max_depth paraméter az a maximális mélység, amelyre az algoritmus le fog süllyedni a fában. Nem szabad megfeledkezni arról, hogy a pszeudokód tisztán demonstratív, de meglehetősen működőképes.

Ahelyett, hogy új algoritmussal álltak volna elő, az alfa-béta metszést hirdető emberek sokféle heurisztikát dolgoztak ki. A heurisztika csak egy kis hack, amely néha nagyon nagy különbséget jelent a sebességben. A sakknak sok heurisztikája létezik, nem lehet mindegyiket megszámolni. Csak a főbbeket adom meg, a többi megtalálható a cikk végén található linkeken.

Először egy nagyon jól ismert heurisztikát alkalmazunk "nulla lépés". Nyugodt helyzetben az ellenség két lépést tehet egy helyett, és ezt követően a fát mélységben (mélység-2), nem pedig (mélység-1) vizsgálja. Ha egy ilyen részfa kiértékelése után kiderül, hogy az aktuális játékos még mindig előnyben van, akkor nincs értelme a részfát tovább vizsgálni, mivel a következő lépése után a játékos csak javítja a pozícióját. Mivel a keresés polinomiális, a sebességnövekedés észrevehető. Néha megesik, hogy az ellenség kiegyenlíti az előnyét, akkor az egész részfát a végéig figyelembe kell vennie. Nem szabad mindig üres lépést tenni (például amikor az egyik király sakkban van, a zugzwangban vagy a végjátékban).

Ezután az ötletet egy lépés végrehajtására használjuk, amely magában foglalja az utolsó lépést tevő ellenséges bábu elfogását. Mivel a keresés során szinte minden mozdulat hülyeség és nem túl okos, ez az ötlet már az elején nagymértékben leszűkíti a keresési ablakot, ezáltal sok felesleges lépést levág.

Úgy is ismert mint történelem heurisztika vagy legjobb mozog szolgáltatás. A keresés során a fa adott szintjén a legjobb lépések mentésre kerülnek, és egy pozíció mérlegelésekor először meg lehet próbálni egy ilyen lépést egy adott mélységben (az elgondolás alapján, hogy a fa azonos mélységeiben ugyanaz gyakran megteszik a legjobb mozdulatokat).
Ismeretes, hogy ez a fajta gyorsítótárazás tízszeresére javította a Kaissa szovjet program teljesítményét.

Vannak ötletek a mozgások generálásával kapcsolatban is. Először is a nyertes fogásokat veszik figyelembe, vagyis azokat a rögzítéseket, amikor egy alacsonyabb pontszámú darab veri a magasabb pontszámú darabot. Ezután figyelembe veszik az előléptetéseket (amikor egy gyalogot a tábla másik végén le lehet cserélni egy erősebb bábura), majd egyenlő elfogásokat, majd elmozdulásokat a történelem heurisztikus gyorsítótárból. A fennmaradó lépések a tábla vezérlése vagy más kritériumok alapján rendezhetők.

Minden rendben lenne, ha az alfa-béta vágás garantáltan a legjobb választ adná. Még a hosszú keresési időt is figyelembe véve. De nem volt ott. A probléma az, hogy egy fix összegű keresés után a pozíció kiértékelésre kerül, és ennyi, de mint kiderült, néhány játékpozícióban nem lehet abbahagyni a keresést. Sok próbálkozás után kiderült, hogy csak nyugodt testhelyzetben lehet megállítani a törést. Ezért a fő keresésben egy további keresés is bekerült, amelyben csak a rögzítéseket, promóciókat és ellenőrzéseket veszik figyelembe (ún. kényszerű keresés). Azt is észrevettük, hogy néhány pozíciót, ahol a csere középen van, alaposabban meg kell vizsgálni. Így az ötletek kb kiterjesztések і csökkentések, vagyis a keresési fa mélyítése és lerövidítése. A mélyedésekhez a legalkalmasabb pozíciók, mint a végjáték gyalogokkal, a csekk elkerülése, egy darab csere a mellszobor közepén stb. Az „abszolút nyugodt” pozíciók alkalmasak a rövidítésre. A szovjet Kaissa programban a kényszerített mellszobor egy kicsit különleges volt - ott a mellszobor közbeni elfogás után azonnal megkezdődött a kényszerített, és a mélysége nem volt korlátozva (mivel egy idő után csendes helyzetben kimeríti magát).

Ahogy Anthony Hoare mondta: " Az idő előtti optimalizálás minden rossz gyökere a programozásban." (Megjegyzés: azok számára, akik azt hiszik, hogy ez az idézet Knuthtól származik, érdekes vita folyik

Nézzünk meg néhány alapfogalmat, amelyek segítenek nekünk egy egyszerű mesterséges intelligencia létrehozásában, amely képes sakkozni:

  • mozgó;
  • sakktábla értékelés;
  • minimax;
  • alfa béta határérték.

Minden lépésnél javítani fogjuk az algoritmusunkat ezen, jól bevált sakkprogramozási technikák valamelyikével. Látni fogja, hogy mindegyik hogyan befolyásolja az algoritmus játékstílusát.

A kész algoritmus megtalálható a GitHubon.

1. lépés Lépések generálása és a sakktábla megjelenítése

A chess.js könyvtárakat fogjuk használni a lépések generálásához, a chessboard.js könyvtárakat pedig a tábla rendereléséhez. A mozgásgeneráló könyvtár a sakk összes szabályát megvalósítja. Ez alapján ki tudjuk számolni az összes lépést egy adott tábla állapothoz.

A mozgásgeneráló funkció megjelenítése. A kezdeti pozíciót használjuk bemenetként, és a kimenet minden lehetséges mozgást végez ebből a pozícióból.

Ezeknek a könyvtáraknak a használatával csak a legérdekesebb feladatra tudunk koncentrálni – olyan algoritmus létrehozására, amely megtalálja a legjobb lépést. Kezdjük azzal, hogy írunk egy függvényt, amely az összes lehetséges lépésből véletlenszerű lépést ad vissza:

Var számításBestMove = function(game) ( //Az összes lépés generálása egy adott pozícióhoz var newGameMoves = game.ugly_moves(); return newGameMoves; );

Bár ez az algoritmus nem túl szilárd sakkozó, jó kiindulópont, mivel elég szinten van ahhoz, hogy játsszon minket:

A fekete véletlenszerű mozdulatokkal játszik

JSFiddle.

2. lépés: Testületi értékelés

Most próbáljuk megérteni, melyik oldal az erősebb egy bizonyos pozícióban. Ezt a legegyszerűbben úgy érheti el, hogy kiszámítja a táblán lévő darabok relatív szilárdságát az alábbi táblázat segítségével:

A pontozási függvény segítségével létrehozhatunk egy algoritmust, amely kiválasztja a legmagasabb pontszámot elérő lépést:

Var számításBestMove = függvény (játék) ( var newGameMoves = game.ugly_moves(); var bestMove = null; //Használjon bármilyen negatív számot var bestValue = -9999; for (var i = 0; i< newGameMoves.length; i++) { var newGameMove = newGameMoves[i]; game.ugly_move(newGameMove); //Возьмите отрицательное число, поскольку ИИ играет черными var boardValue = -evaluateBoard(game.board()) game.undo(); if (boardValue >bestValue) (>bestValue = boardValue; bestMove = newGameMove ) ) return bestMove; );

Az egyetlen kézzelfogható javulás az, hogy az algoritmusunk most megeszi a darabot, ha lehetséges:

A fekete egy egyszerű pontozási funkcióval játszik

Megnézheti, mi történt ebben a szakaszban a JSFiddle-n.

3. lépés: Keresés fa és minimax

Ezután létrehozunk egy keresési fát, amelyből az algoritmus kiválaszthatja a legjobb lépést. Ez a minimax algoritmussal történik.

jegyzet fordítás

Egyik cikkünkben már foglalkoztunk azzal – megtanultunk olyan mesterséges intelligencia létrehozását, amelyet nem lehet tic-tac-toe-ban legyőzni.

Ebben az algoritmusban az összes lehetséges mozgás rekurzív fáját feltárjuk egy adott mélységig, és a pozíciót a fa „leveleinél” értékeljük ki.

Ezután a gyermek legkisebb vagy legnagyobb értékét visszaadjuk a szülőcsomópontnak, attól függően, hogy kinek a lépését számítjuk (vagyis minden szinten megpróbáljuk minimalizálni vagy maximalizálni az eredményt).

Minimax megjelenítése mesterséges helyzetben. White számára a legjobb lépés a b2-c3, így garantáltan olyan pozícióba kerülünk, ahol az eredmény -50< newGameMoves.length; i++) { game.ugly_move(newGameMoves[i]); bestMove = Math.max(bestMove, minimax(depth - 1, game, !isMaximisingPlayer)); game.undo(); } return bestMove; } else { var bestMove = 9999; for (var i = 0; i < newGameMoves.length; i++) { game.ugly_move(newGameMoves[i]); bestMove = Math.min(bestMove, minimax(depth - 1, game, !isMaximisingPlayer)); game.undo(); } return bestMove; } };

Var minimax = függvény (mélység, játék, isMaximisingPlayer) ( if (depth === 0) ( return -evaluateBoard(game.board()); ) var newGameMoves = game.ugly_moves(); if (isMaximisingPlayer) ( var bestMove = -9999; for (var i = 0; i

A minimax segítségével az algoritmusunk elkezdi megérteni a sakk alapvető taktikáját:

Megnézheti, mi történt ebben a szakaszban a JSFiddle-n.

Minimax 2-es mélységszinttel

A minimax hatékonysága nagyban függ az elérhető keresési mélységtől. Ezt fogjuk javítani a következő lépésben.

4. lépés: Alfa-béta kivágás

Pozíciók, amelyekre nincs szükségünk, ha alfa-béta vágást használunk. A fát a leírt sorrendben látogatják.

Az alfa-béta metszéssel jelentős javulást érünk el a minimax értékben, amint azt a következő példa mutatja:

Megnézheti, mi történt ebben a szakaszban a JSFiddle-n.

A 4-es mélységű keresésnél értékelendő pozíciók száma és a képen látható kezdőpozíció.

5. lépés: Továbbfejlesztett értékelési funkció

Az automatizálás és a számítástechnika fejlődésének története furcsa módon kapcsolódik a sakkhoz. A 18. században A „gondolkodó” sakkgépek trükkökre és álhírekre szolgáltak. Az első valódi mesterséges intelligenciával rendelkező gép, amelyet Spanyolországban hoztak létre a huszadik század elején, képes volt egy királlyal játszó sakkozót királlyal és bástyával sakkmattolni. Nyilván nem véletlen, hogy a számítástechnika hajnalán az egyik első igazán intellektuális feladat a programozókra a sakkozás volt. Az első sakkprogramokat létrehozók egyike, a műszaki tudományok doktora, Vlagyimir Lvovics Arlazarov professzor a sakkprogramokról és ennek az ősi játéknak a mesterséges intelligencia-technológiák fejlődésével való kapcsolatáról beszél.


– Vlagyimir Lvovich, hogyan jutott eszébe, hogy a számítógép képes intellektuális problémákat megoldani?

– Amikor rájöttek, hogy a számítógépek nemcsak ki tudják számolni, ahogy a kezdetektől fogva kitalálták, hogy az aritmetikai műveletek mögött van egy logikai művelet, amely nemcsak segédfunkciókat lát el a számítógépes programok tevékenységében, hanem a segítségével lehetséges önálló problémákat megoldani, világossá vált: érdemes megpróbálni intellektuális feladatokat feltenni a számítógépre. Valahol a 40-es évek végétől az 50-es évek végéig ezt aktívan vitatták, sőt, félig filozófiai kérdéseket tettek fel: lehet, hogy a számítógépek okosabbak az embereknél? És akkor mi van? És mindezt teljes komolysággal. Ma már nem vetnek fel ilyen kérdéseket, eltelt 40 év. Aztán a számítástechnika hajnalán jöttünk csak rá, mire képesek elvileg a gépek. Rájöttünk, hogy az emberi agy a számítógéphez hasonló eszköz, ezerszer, milliószor erősebb, de alapvetően kicsit más. Világossá vált, hogy legalább a legtöbb racionális probléma, amit az ember megold, hozzárendelhető egy géphez. Ezért megpróbálhat olyan programokat írni, amelyek megoldják ezeket a problémákat. Egy, kettő, ezer... elvégre az ember sem old meg végtelen számú problémát. És úgyszólván be lehet programozni az ember összes szellemi tevékenységét.

– Miért döntöttél úgy, hogy a játék felé fordulsz?

– Ahogy már mondtam, széles körben vitatták, hogy egy gép tud-e gondolkodni. Az viszont teljesen világos, hogy ha programozókról beszélünk, olyan emberekről, akik nem filozófiával, hanem valódi számítógéppel foglalkoznak, akkor nem az a kérdés, hogy a gép elvileg tud-e valamit, hanem az, hogy példákat keresünk arra, hol intellektuális feladatokat határoz meg, és azokat, amelyek az ember számára elérhetőek szellemi tevékenysége során. A vonal itt természetesen nem egyértelmű. De világos, hogy ha az ember 20 jegyű számokat szoroz, akkor nem mélyen intellektuális feladattal áll szemben, hiszen ennek végrehajtásához nagyon könnyű találni egy triviális algoritmust, amelyet minden iskolás ismer. De azokat a feladatokat, ahol teljesen egyértelmű, hogy az embernek nincs a priori algoritmusa, de ennek ellenére jól megoldja, azokat intellektuálisnak nevezzük. Az ilyen feladatok első versenyzői a játékok, azon egyszerű oknál fogva, hogy legalább a szabályok világosak. A feladat rendkívül nehéz, de a játékszabályok könnyen megfogalmazhatók, így a gép funkciói is könnyen meghatározhatók. Másrészt a sakk nehéz feladat az ember számára, amiről valahogy sosem esett szó, és most sem esik szóba.

– Miért választotta a sakkot játékként? Talán hagyomány?

– Miért csak sakk? Kipróbáltuk a terep- és egyéb játékokat. De a sakknak számos előnye van a többi játékkal szemben. Ha az egyszerű játékokban egy gép megver egy embert, akkor ez senkit sem lep meg. A sakk nehéz játék, és a számítógépes győzelem jelentős. Aztán a sakkban, sok más játéktól eltérően, sok megkülönböztethető minőségi kritérium létezik, vagyis meg lehet határozni: a gép jól játszik, a gép jobban, jobban, jobban. Sok más játékban nagyon nehéz ilyen fokozatokat megállapítani. Néhányukban a gépet vagy teljesen pontosan megtanítják játszani, és ezáltal azonnal elveszti érdeklődését a játék iránt, vagy rendkívül rosszul játszik. A sakkban pedig, nem elvont, hanem úgymond elsajátított, annyi szint van, hogy segítségükkel meg lehet határozni egy gép játékának osztályát.

– Tehát világos, hogy miért volt a sakk a mesterséges intelligencia egyik első és legfontosabb feladata. Milyen módszerekkel oldották meg?

– A kezdetektől fokozatosan sajátítottam el a sakkjátszma problémamegoldásának módszertanát. A sakk elvileg véges játék, és matematikai szigorral bebizonyítható, hogy bármilyen pozícióban, absztrakt módon minden ellenfél számára megvan a legjobb lépés, tehát valamilyen eredmény. Ezért le kell írni egy olyan algoritmust, amelyben ez a játék a végéig kiszámítható. Egy ilyen algoritmus egyetlen hátránya, hogy sok időt igényel. És semmivel sem vagyunk közelebb azokhoz az idősorokhoz, amelyek szükségesek ahhoz, hogy kiszámoljuk mondjuk a sakkot a kiinduló helyzetből a végéig. Az elmúlt ötven évben a feladat időbeli végtelenül összetett maradt. Nos, a végtelen mínusz tíz még mindig a végtelen. De ha időre van szüksége, mondjuk 10-100-ig, és felgyorsítja a gépet, mondjuk, 100-szor, és megkapja a 10-et a 98-as évek hatványáig, akkor valószínűleg nem lesz könnyebb. Ezért a fő algoritmus kimerítő, triviális: ha ezt teszem, akkor az ellenségnek annyi lehetősége van. Az opciók exponenciálisan nőnek, és láncokat alkotnak. De a pozíciók száma általában véges, és nincs belőlük olyan sok minden láncon. A láncok fákká egyesülnek, amelyek szintén nem végtelenek. Igaz, exponenciálisan nőnek, és a láncok száma nő. Felmerül tehát egy fontos kérdés: szükséges-e a teljes keresés a végsőkig - minden sakkmatthoz, patthelyzethez, háromszoros ismétléshez és a játék egyéb befejezéséhez a sakkszabályok szerint? Végül is, ha az algoritmus olyan pozíciókhoz vezet, amelyek nem szükségesek ezen a fán, akkor talán ezt az egész fát nem kell figyelembe venni. Jegyezd meg magadnak, hogy egy olyan diszpozícióban, ahol Fehér egy mozdulattal párosodik, ugyanazt a végtelen fát építheted, de nem kell figyelembe venni, elég, ha megtalálod ezt az egyetlen lépést. Talán ugyanez a helyzet a sakkra általában? Általánosságban elmondható, hogy a felsorolás, a lehetőségek felsorolásának algoritmusa annyi ember által megoldott problémához kapcsolódik, hogy ha tudnánk, hogyan kell valami nagyon eredeti módon megszervezni, akkor bizonyos értelemben olyan lenne, mint a kerék feltalálása. emberiség - az egyik legalapvetőbb felfedezés. Tehát a nyers erő lehet, és talán az is, a mesterséges intelligencia kereke.

– Az egyik mesterséges intelligenciáról szóló cikkben azt olvastam, hogy az intelligencia a megértés és a választás képessége. Természetesen nagyon nehéz megtanítani a számítógépet, hogy sok lehetőség közül válasszon. De biztosan lehetséges néhány sakkspecifikus megoldás?

- Igen igen. Ezt a problémát gyorsan és hatékonyan kellett megoldani, és a sakkban gyorsan eljutottak a kérdés következő elméleti megfogalmazásához: ne végtelen számú lépést nézzünk, hanem csak néhány lépést előre. Tegyük fel, hogy nézzünk 5 lépéssel előre. Az sok. Ha szereted a sakkot, és az 5 lépés nem tűnik elégnek, akkor vegyünk 10-et. És akkor a gép, 10 lépéssel, 20 féllépéssel előre, nem hibázik, és garantálja, hogy 10 lépés után nem lesz kevesebb. darabok. Egyértelmű, hogy egy erős játékgéppel van dolgunk. Tehát a játékfát le kell rövidíteni, és sokkal szűkebb helyen kell megoldani a problémát. Más kérdés, hogy ezt a fát igyekeznek hiányosan, matematikai vágási módszerekkel figyelembe venni. Az egyikről már beszéltem: ha egy mozdulatban van pár, akkor nem kell más lehetőségeket nézegetni. Más algoritmusok heurisztikusak és nem pontosak. Átlagosan megfelelően működnek, sok teljesen pontos, de tévedhetnek is. Például nem minden lépésen megyünk végig, hanem csak a rögzítéseken, és jóval előre számolhatjuk azokat, mert a rögzítések kevés. A mozdulatok teljes mélysége kicsi: harminckét darabnál többet nem lehet megenni. Ezért a láncok hossza kicsi, és kevés az ág. Természetesen egyértelmű, hogy nem lehet csak rögzítésre építeni egy játékot, bizonyos helyzeti szempontoknak kell lenniük. A kényszerítés (rögzítés, ellenőrzés) és a pozíciómegfontolások kombinációja, valamint a keresés bizonyos mélysége az összes létező algoritmus alapja, és ez nem sokat változtat. Egy másik kérdés: hogyan válasszam ki a következő lépéseket? Csak egyszerű formai kritériumok alapján (elfogás, ellenőrzés), vagy összekapcsolni ezeket a mozdulatokat, ahogy a sakkozók szeretik mondani, egy tervvel, hogy kitaláljanak néhány láncot, amelyeknek van valami közös tulajdonságuk? Erről mindenesetre nagyon sok komoly munka született, gyakorlati alkalmazásokkal. Nem hiába vesznek részt a sakkprogramok létrehozásában meglehetősen tekintélyes cégek.

– Mikor jelentek meg az első sakkprogramok?

– Az igazi sakkprogramok először valahol az 50-es évek végén jelentek meg Amerikában, majd valahol a 60-as évek elején nálunk. A programok nagyon gyengék voltak, mert akkoriban rendkívül primitív gépek voltak, és gondolkodásunk még nem volt hozzászokva az újdonságokhoz. 1963 körül kapcsolódtunk be ebbe az üzletbe. Aztán volt pár meccs a hazai autóinkon. Véleményem szerint 1967-ben volt az első meccs a Szovjetunió és az USA között. Így hívták, bár természetesen két csapat, és nem országok között zajlott. Az Elméleti és Kísérleti Fizikai Intézetben kidolgozott programunk és John McCarthy, a számítógépes világ egyik igen híres emberének, a programnyelvek egyik megalkotójának programja párosult, aki akkoriban rajongott a sakkprogramokért. A mozgásokat távírón továbbították, mivel akkor még nem voltak hálózatok.

- És ki nyert?

– Akkor 3:1-re nyertünk. 4 meccset játszottak. Naponta történt egy lépés, mert az amerikaiaknak erősebb és mélyebb programjaik voltak, amelyek sokáig gondolkodtak, mi pedig a gyorsan és lassan gondolkodó programok különböző verzióin játszottunk. Győzelmünk volt az első sikerünk. Ez az irány fokozatosan kezdett kialakulni, és különösen a 70-es években vált aktívvá. 1974 körül Stockholmban rendezték meg az első sakk-világbajnokságot. Körülbelül nyolc program vett részt, köztük a miénk is. Aztán mi is nyertünk, és lettünk az első világbajnokok. Azóta rendszeresen, 3 évente rendeznek világbajnokságot. Még két alkalommal vettünk részt rajtuk - 1977-ben és 1980-ban. Akkor még nem termett babér, mert 1977-ben megosztoztunk a 2. és 3. helyen (sok sakkprogram vett részt, még regionális válogatók is voltak), 1980-ban pedig 4. ill. 5. hely. Általában lassan visszagurultak. A helyzet az, hogy ekkorra már óriási előrelépés történt a számítástechnikában, és még mindig meglehetősen elavult számítógépeken játszottunk. És 1980-ra világossá vált számunkra, hogy a versenyzés azokon a gépeken, amelyeken dolgoztunk, minden értelmét vesztette, és általában a sakkprogramok terén végzett munka Oroszországban kezdett semmivé válni. Bár elég sok érdekes elméleti munka volt. Kicsit később megalkották talán az első programot, amivel körbejárták a világot, ez teljesen pontosan képes volt lejátszani egy összetett végjátékot, vagyis királynőt és gyalogot királynő ellen, vagy bástya és gyalogot bástya ellen. A program egyszerűen a végére vette az ilyen végjátékokat, azaz bármilyen pozícióban tökéletesen helyes mozdulatot adott. Az algoritmus az egyszerű felsorolástól kissé eltérő elvekre épült, a teljes pozíciókészlet teljes ellenőrzésére. Nos, akkor végeztek ilyen jellegű munkát a sakkban. Aztán elbúcsúztunk a gyakorlatias játéktól, mert már több százszorosak voltak a sebességkülönbségek. De a bajnokságok folytatódtak, és a sakkprogramok fejlesztése teljesen új szintre lépett, miután minden PC-re került. A széles körben elterjedt kommercializáció következtében hatalmas összegeket kezdtek sakkprogramokba fektetni, és mindent azonnal minősítettek. És korábban olyan tudósokhoz tartoztak, akik, hacsak nem kényszerítik őket, nem titkolják eredményeiket, hanem éppen ellenkezőleg, népszerűsítik őket. 1980-ban éreztük először, hogy eljött az ideje a kereskedelmi műsorok készítésének. Ez a világ természetesen egyedi. Egyrészt azért, mert pénzt fektetnek bele, másrészt azért, mert pénzt vonnak ki belőle. Bár vannak sakkprogramokkal foglalkozó magazinok, az elmúlt 15-17 évben a valódi eszmecsere jelentősen visszaesett, mert ezek óriási üzletté váltak a PC-n.

– De a kereskedelem serkenti a sakkszoftver-piac fejlődését?

– Korábban a számítástechnikai fórumokhoz időzítették a számítógépes versenyeket. Van egy ilyen szervezet - az IFI (International Federation of Informatics), és általában a világbajnokságokat a kongresszusához időzítik. Mára teljesen független eseményekké váltak, meglehetősen tekintélyesek. Már több száz és száz ilyen program létezik. Maga a programozás és tudásunk szintje már olyan, hogy egy egyszerű sakkprogram elkészítése a legkisebb nehézséget sem okozza. Ez normális diákmunka. Csak egy diákra bízom. A sakkprogram megverése úgyszólván mindennapossá vált.

– De mint mindig, az alsó szint egyszerűbbé válik, a magasabb szint pedig bonyolultabbá válik?

- Ez az. Ezért a legújabb programok, azok, amelyek most nyernek, különösen a Kaszparovot legyőző program, sokkal erősebbek lettek. A keresés mélysége jelentősen megnőtt, és ez természetesen matematikai fejlődésünk, részben egyszerűen a számítástechnika fejlődésének az eredménye. Végül is, ha korábban soknak számított a másodpercenkénti 1000 pozíció figyelembevétele, most azokban a fákban, amelyekről már beszéltünk, több mint egymillió pozíciót vesznek figyelembe. A plusz millió pedig több szintű lépést jelent a megfelelő választás mellett. A keresési mélység minden egyes szintje pedig nagyban erősíti a programot. Minden előrelépésenkénti szint hozzávetőlegesen egy rangot jelent, és mondjuk négy lépésnyi keresési mélység a harmadik rang, öt lépés pedig már a második rang. Amikor elérjük a 11-13 lépéses szintet, ez már mesteri szint, és elég nehéz folytatni a játékot a géppel. Természetesen most az amerikaiak vezetnek, mert tudják, hogyan kell ilyen dolgokba nagy pénzt fektetni.

– Minden döntéshozatalhoz szükséges mesterséges intelligencia programnak nemcsak heurisztikus mechanizmusokra van szüksége, hanem valamilyen tudásbázisra is. Mi a kapcsolat a tudásbázis és a sakkprogramokban pozíciókat generáló algoritmusok között?

– Senki sem tud biztosat megmondani, mert ez spekuláció kérdése. Voltak elég erős programok egyszerűen minimális tudással, szándékosan minimálisan, kifejezetten azért, hogy lássák, mit lehet kicsikarni a tiszta matematikából. Ez egy bizonyos ponton a kommercializációnak volt köszönhető, és különösen annak, hogy elkezdték a lehető legerősebb programokat készíteni - bármiről is legyen szó. De részben abból adódóan, hogy a beágyazott tudással való munka önálló feladat, nagyon sok van. Először is egy hatalmas kézikönyvet készítettek. Most a címtárak több százezer pozíciót tartalmaznak. Ekkor mindig sok sakk intelligencia fektet be a pozíciók értékelésébe. Ez persze a játékanyagon, ami triviális, és néhány helyzeti tényezőn is lezajlik. Tehát a helyzeti tényezők pusztán sakk intelligencia, ami természetesen programozott, de itt sok minden le van rakva, és folyamatosan fejlesztik. És minél több tényező kerül bele, annál erősebb a program. Bizonyos értelemben a pozíció értékelésének képessége és a keresés mélysége felcserélhető dolgok. Ha tudnánk, hogyan kell zseniálisan értékelni egy pozíciót, akkor elég lenne az összes első lépést kipróbálnunk. Ez olyan, mint egy extrém példa. Nyilvánvaló, hogy a pozíció jobb értékelése ennek megfelelően nagyobb hatással van a keresés mélységére. Ez a második, alapvető módszer. Elég sok olyan program van, ahol a sakk intelligencia beépül magának az opcióknak a megválasztásába, vagyis egyes tisztán sakkszempontok, bizonyos tervek. Elég sok ilyen megfontolás létezik, ami korlátozza a keresés hatókörét. Működési területük nem túl széles, és a sakkra vonatkozó intellektuális adatok lassítják a keresést. Egyébként éppen a szellemi dolgokért szorgalmazta Botvinnik egykor erősen. Nagy gépi sakk-rajongó volt, és néhány ötlettel hozzájárult ott. Bár soha nem sikerült működőképes programot létrehoznia, ennek ellenére tekintélye akkoriban igen magas volt. Ezért nagyon bánt, hogy általában nem olyan „intellektuális” az irány, mint szerette volna, és nagyon korlátozott mennyiségű tiszta sakktudást fektettek a programokba.

– Mi a helyzet a speciális sakkszámítógépekkel? Úgy tűnik, pontosan a generációs módszerrel cselekszenek?

- Hát persze. Először is, a generálás szempontjából a keresés sematikus. Másodszor, a pozíciótáblázatok nem kevésbé fontosak, mert a sakkban a pozíciók ismétlődése nagyon magas. E4E6D4 vagy D4E6E4 megy - a pozíció ugyanaz lesz, de ez csak 3 fél mozdulat. És amikor elkezdünk mélyebbre menni, a pozíciók ismétlődése nagyon magas. Harmadszor, a műszaki terület. Valójában egy időben elméleteket építettünk fel arra vonatkozóan, hogy a helyi változások alapvetően mely pozíciókra nem vezethetnek a kényszeropciók változásához, hogyan lehet valamilyen sablont létrehozni. Az ilyen lehetőségek sablonjai jól illeszkednek a különféle tisztán technikai számítógépes sémákhoz. Természetesen a referenciadiagramok nagyon fontosak.

– Van-e olyan univerzális mentális apparátus létrehozásának eszköze, amelybe be lehetne helyezni egy tudásbázist - mindegy, sakkállások vagy bármi más, milyen szabályok szerint kell dolgozni ezzel a tudással - és megfelelő eredményt elérni belőle?

– Egyértelmű, hogy a konstruktivitás szempontjából egy ilyen feladat ma nem megoldható és nem is aktuális. Bár sok intellektuális probléma megoldása folyamatban van, például a szövegfelismerés. Behelyezhet egy szövegrészt a szkennerbe, és megjelenítheti a képernyőn a Wordben. El fogja olvasni magát, minden betűt felismer. Valójában számos szellemi feladatban haladtunk előre. Ezek egy része már megoldódott, mások megoldása folyamatban van. Bizonyos szempontból ez viszonylag jobban működik, mint emberi részvétellel, máshol még mindig rosszabb. Sok példa van a gyakorlati problémákra. Ami az univerzális mesterséges mentális mechanizmust illeti, ez inkább filozófiai probléma, mint gyakorlati. Végül is, még egy olyan egyszerű játéknál is, mint a sakk, 30-40 évbe telt, mire elértünk valamit. Minden filozófia véleményekre épül. Mindenki azt hiszi, hogy neki van igaza, és talán mindenkinek igaza van a maga módján. Én például egész életemben foglalkoztam mesterséges intelligenciával, és úgy gondolom, hogy az emberi agy nem más, mint egy nagy számítógép, ezért nem lehet azt mondani, hogy alapvetően lehetetlen hozzá hasonlót létrehozni. A kérdés az ereje, sebességi jellemzői és tudással való megtöltése. Nincs itt semmi érthetetlen. Ez az én személyes nézőpontom. De vannak más vélemények is. Természetesen, ha felismerjük az ember isteni természetét, akkor két ismeretelméleti lehetőség közül kell választanunk. Vagy igen, isteni természetünk van, de ez megismerhető. Ebben az esetben nem tudjuk igazán reprodukálni azt, amire az Úristen képes volt, de legalább részben újrateremthetjük az Ő alkotásait. Vagy állunk az agnoszticizmus álláspontján, és akkor ez megismerhetetlen, és a kérdés teljesen eltávolítható. Kiderült, hogy az emberi agy megold néhány problémát – és efelől senkinek sincs kétsége. De az agyat nem tudjuk utolérni, mert egyrészt Isten teremtette, másrészt nem vagyunk képesek megismerni. Mindhárom pozíció a hithez kapcsolódik, hiszen a valóságban nem szükséges ismerni az agy összes funkcióját. Ha egy olyan gépet készítünk, amelynek teljesítménye megegyezik az agyéval, akkor nem kell úgy gondolkodnia, mint az agy. Ez másképp fog működni.

– A pszichológiában, ha jól tudom, az ember értelmi fejlődését három kritérium határozza meg: az elvonatkoztatás képessége, az intellektuális sorozat létrehozása, és még valami... Mennyiben valósulnak meg ezek a képességek a mesterséges intelligenciában, és valósulnak-e meg. egyáltalán?

– Nagyon sok olyan program van, amely kifejezetten a meglévő tényanyagtól elvonatkoztatott koncepciók megalkotását célozza. Az ilyen programok jól működnek. Más kérdés, hogy az ember tudja, hogyan kell ezeket a fogalmakat úgy alkotni, mintha saját törvényei szerint, amit ő talál ki magának. Minden próbálkozásunk, hogy ezeket a törvényeit a logikai algebra nyelvére lefordítsuk, hiábavalónak bizonyul. Az embereknek sokkal erősebb gondolkodási mechanizmusa van, amit egyszerűen nem ismerünk. Nem tudunk "egyáltalán" semmit sem csinálni. Megalkotjuk a szükséges készítményeket, de nem tudjuk pontos gépi feladatokban „kifejezni”. Minden nehezen megy a mechanikai problémákra, és ha le is jön, akkor is lassú. Valószínűleg még nem ismerünk közvetlenebb módokat a cél elérésére. Bármit belehelyezhetsz a számítógépedbe. A kérdés az, hogy az ember folyamatosan tudja manipulálni ezt a tudást, de az adatok korlátozott mennyisége és sebessége miatt még nem tudja, hogyan kényszerítsen erre egy gépet.

– De talán nincs értelme a tudás manipulálására kényszeríteni a gépet?

– Itt mind az erkölcstelen, mind az építő szempontokat érintik. Még messze vagyunk a randalírozó gépektől. Biztosan lesz elég nyugalom az én életemre, és a tiédre is. Még korlátozott területeken sem tanultuk meg, hogyan kényszerítsük a gépet a feladatok manipulálására, még azokat is, amelyeket meg tud oldani. Feladatot tűztünk ki, ő pedig csak parancsra gondol.

– Vlagyimir Lvovics, mondd meg, ha most lenne újra a számítástechnika hajnala, érdemes lenne sakkprogramokkal foglalkozni? Tényleg ennyire hozzájárultak a fejlődéshez?

– A sakk mégis kitágítja a látókörünket. A sakkprogramokban feladatok vannak kitűzve, az eredmény látható, kiértékeljük. Ennek ellenére sok megoldott, érdekes problémának kell lennie, ami hozzájárul a számítástechnika fejlődéséhez.