Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit

Ahoj,
prosím mohl by mi někdo poradit, jak bych měla řešit einsteinovu hádanku v Pascalu? Vůbec nevim, jak začít. Napadly mě množiny pro národnost, barvy atd..ale pak nevim jestli to vkládat do matice. Nebo jak pokračovat.
Díky za odpověď
Offline
↑ cendulka1234:
Co je Einsteinova hádanka?
Offline
No předpokládám, že to řešení by mělo být obecné.
- Základ by byla nějaká vazba Subjekt x Vlastnost - kdy těch vlastností může být více. Dá se to pak samozřejmě interpretovat jako ta klasická tabulka
- jedna monžina subjektů (to mohou být ty domy, lidé nebo cokoliv)
- potom jedna množina typů vlastností s možnými hodnotami kde platí, že počet vlastností musí být stejný, jako počet subjektů
- no a toto vše představuje nějaký výchozí stav. Pro začátek bych ho nadefinoval nějak jednoduše:
Subjekty = Pepa, Franta, Karel
VL1 - mazlíček = pes, kočka, had
VL2 - výška = 180 cm, 165 cm, 170 cm
VL3 - patro domu = přízemí, první, druhé
- potom bych začal definicí pravidel, kde se to může začít komplikovat. Pravidla bych rozdělil na dva typy, podle způsobu řešení:
a) explicitní
b) podmíněná
explicitní jsou ty, která se dají přímo vložit do matice bez jakýchkoliv dedukcí. Podmíněná pracují s dalšími vstupy podle různých pravidel.
- algoritmus tedy v první iteraci načte pouze explicitní pravidla - to mohou být např.:
"Karel má psa jako mazlíčka" (Karel x VL1 = pes)
"Franta bydlí v druhém patře" (Franta x VL3 = druhé)
- nakonec ta nejkomplikovanější fáze, kdy se algoritmus snaží řešit všechny ostatní pravidla, která nejsou explicitní. Jede tedy v iteracích, dokud vše nevyřeší, nebo se nedostane do stavu, kdy nebude možné žádné pravidlo vyřešit (tj. chybné zadání)
- algoritmus pro aktuální pravidlo vytvoří stavový prostor - tedy např. pro pravidlo "Pepa bydlí vedle karla" - tak protože neví, kde bydlí karel - tak označí jako možný stav přízemí, tak první patro (druhé už ne - neboť tam bydlí franta)
posléze projde oba tyto stavy - a prochází další pravidla, pro oba stavy, kdy jednou Pepa bydlí v přízemí a posléze v prvním patře. Např. by následovalo pravidlo:
"Karel nebydlí vedle Franty"
ten by byl pro stav, kdy Pepa bydlí v přízemí nevalidní - celá větev by se zahodila. Pro stav, kdy Pepa bydlí v prvním patře je jediná možnost pro Karla přízemí - jedná se tedy v této kombinaci o explicitní pravidlo a celá větev je splněna - hodnoty v této větvi se doplní explicitně do matice a jede se dál
- pro rozsáhlé stavové prostory je třeba zapracovat na nějaké heuristice, aby se to nesnažilo řešit naprosto nesouvisející pravidla - ale to asi ani u toho einsteinové hádanky nebude potřeba
- až bych měl hotový základ, tak bych to postupně vylepšoval a implementoval chování složitějších pravidel
Takže asi nějak takhle.
Offline