Lapsuudesta lähtien olen miettinyt, kuinka elektroninen 20Q peli toimi. Ajattelet esinettä, asiaa tai eläintä (esim. peruna tai aasi ). Laite kysyy sitten joukon kysymyksiä, kuten:

  • Onko se suurempi kuin leipä leipä?
  • Löydetäänkö sitä ulkona?
  • Käytetäänkö sitä virkistykseen?

Voit vastata jokaiseen kysymykseen kyllä , ei , ehkä tai tuntematon . Kuvittelin sen aina toimivan valtavien, sisäkkäisten ehdollisten kanssa (iv id = ”805a522cc3” Luulen kuitenkin, että tämä on epätodennäköinen selitys, koska se on monimutkainen ohjelmoijalle.

Kuinka otan käyttöön tällaisen järjestelmän?

Vastaa

En tiedä miten 20Q teki sen nimenomaan, mutta on paljon tietoa siitä, miten 20 kysymystä .

On monia tapoja ratkaista tämä, mutta kuvaan yhden tavan . Nämä pelit voivat toteuttaa jonkinlaisen päätöspuun . 20Q: n kaltaiselle sähköiselle pelille tämä puu olisi ennalta laskettu ja melko helppo kulkea. On olemassa tapoja käyttää päätöksentekopuita , joissa peli voi hyväksyä uusia esineitä kysymyksiinsä lopussa, jos se ei osaa arvata mitä käyttäjä on kysyminen.

Kun kysymykset ovat sarja kyllä tai ei vastauksia, päädyt binääriseen puuhun. Jokainen solmu on kysymys ja lehdet ovat vastauksia. Kun kysymyksiin vastataan tuntemattomilla tai epävarmoilla kysymyksillä, lapsisolmut voidaan yhdistää ja heidän kysymyksensä voidaan esittää sarjassa mahdollisten vastausten lisäämiseksi.

kirjoita kuvan kuvaus tähän

Periaatteessa tämä on prosessi:

  1. Aloita täydellisestä luettelosta objekteista. Nämä kaikki voivat alkaa yhtä todennäköisesti tai ne voidaan lajitella sen mukaan, kuinka todennäköisesti objekti valittiin testauksessa.
  2. Aloita päätöksentekopuun ensimmäisestä kysymyksestä. Työnnä se kysymysjonoon.
  3. Esitä kysymys jonon päällä.
  4. Prosessivastaus:
    1. Kyllä / Ei vastauksia poistaa / lisää ennalta määrätyn määrän todennäköisyys jokaisesta vastauksesta kysymyksen perusteella.
    2. ”Ehkä” vastaus poistaa / lisää murto-osan ennalta määrätystä ”kyllä” -määrästä.
    3. ”Tuntematon” ei muuta todennäköisyyksiä
  5. Tuntematon tai Ehkä-vastaus työntää molemmat seuraavista solmuista kysymykset kysymysjonoon. ”Kyllä” tai ”ei” vastaus vain lisää vastaavan kyllä / ei-solmun kysymysjonoon.
  6. Siirry vaiheeseen 3, kunnes kysymyksistä tai yksittäisen vastauksen todennäköisyys ylittää ennalta määritetyn ”varmuuden” ”kynnys.
  7. Anna todennäköisin vastaus.

Puun luominen on todennäköisesti toisen kysymyksen aihe. Mutta pohjimmiltaan se valitsee kysymyksiä, jotka jakavat vastaukset mahdollisimman paljon. Sijoita kysymykset, jotka jakavat kysymykset yhtä tasaisesti, lähelle alkua, jotta suurin osa kysymyksistä voidaan tuhota nopeimmin.

Vastaus

Yksinkertainen vastaus on, että kädessä pidettävä peli 20Q luotiin tekoälystä, joka asuu osoitteessa http://20Q.net . 20Q.net -sivustolla voit pelata Twenty Questions -pelin eri versioita, samanlaisia kuin lelu, paitsi että peli oppii jokaisesta pelatusta pelistä. Kämmenlelu käyttää samat hermoverkkoalgoritmit. Hermoverkko valitsee kysymykset sekä arvaamaan. Tämä lähestymistapa tarkoittaa, että tekoäly arvaa usein oikein, vaikka vastaat kysymykseen eri tavalla kuin sille on opetettu. Toinen etu on, että peli esittää kysymyksiä eri tavalla jokaisessa pelissä, vaikka ajattelisit samaa asiaa.

Algoritmit ja klassisen englantilaisen pelin (eläin, vihannes, mineraali) hermoverkon loivat Robin Burgener vuonna 1988. . . minä.

Kiitos kysymyksestäsi.

Kommentit

  • Hei Robin, tervetuloa sivustolle. Kuka parempi vastata tähän kysymykseen kuin itse keksijä. ’ on mielenkiintoista tietää, kuinka monimutkainen 20Q todella on. Kiitos panoksestasi sivustoon ja enemmänkin panoksestasi tekoälyyn. Toivottavasti ’ vierailet sivustolla ajoittain ja vastaat A.I. kysymykset :).
  • hehe, rakastan sitä, kun näin tapahtuu xD.

Vastaa

Googlen ”20q code” ja löysin tämän: http://mosaic.cnfolio.com/B142LCW2008A197

Tämä versio on vain eläimille, mutta varsinaisella 20 kysymyksellä on todennäköisesti samanlainen algoritmi.

Tässä on lyhyt kuvaus linkitetystä koodista:
Ohjelmaan on koodattu useita erilaisia vastauksia.Sitten niille määritetään useita TOSI- tai EPÄTOSI-attribuutteja:

#define ANIMALS_LIST "daddylonglegs bee penguin eagle giraffe octopus tiger elephant jellyfish bull \nparrot dolphin python crocodile cat leopard monkey zebra sheep rat \nowl spider frog polarbear snail tortoise rabbit salmon rhino fox" #define MAMMALS "0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 1" #define FLYING_ANIMALS "1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" #define WATER_ANIMALS "0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0" #define BEAK "0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0" ... 

Kuten näette, mehiläinen ei ole nisäkäs, mutta lentää jne.

Jokaiselle ryhmälle on taulukko:

int mammals[ TOTAL_ANIMALS ] = { 0 }; int flying_animals[ TOTAL_ANIMALS ] = { 0 }; int water_animals[ TOTAL_ANIMALS ] = { 0 }; ... 

Kun jokainen kysymys kysytään:

 askUserQuestion( guesses, "\nQuestion %d: Is your animal a mammal? \n", mammals ); 

Ohjelma tarkastelee sopivan luokan määritelmää ja seuraa, mikä eläin on todennäköisesti ajateltavasi TOSI- tai EPÄTOSI-arvojen ja antamasi kyllä tai ei-vastauksen perusteella.

Tämä tehdään:

void askUserQuestion( int guessNumber, char* question, int* animalData ); 

Vastaus

It ”s ei massiivinen päätöksentekopuu tai joukko kovakoodattuja / muuta lausuntoja. Robin Burgener, keksijä, dokumentoi algoritminsa täysin vuoden 2005 patenttihakemuksessaan. ”nerokkaasti yksinkertaisia.

Kommentit

  • Muiden vastausten sijaan kannattaa antaa lyhyt kuvaus algoritmista pelkän pelkän sijasta.lähettämällä linkin siihen.
  • Jos unohdit muut vastaukset, hän kommentoi yllä! ehkä @ user22025 voisi myös antaa lyhyen selityksen täältä: D

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *