Ristsõna koostamine kasutades kitsenduste rahuldamist ja libalõõmutamist

Date

2013

Journal Title

Journal ISSN

Volume Title

Publisher

Tartu Ülikool

Abstract

Selle töö eesmärk on luua programm, mis koostab ristsõnu, kasutades kahte meetodit: kitsenduste rahuldamist (KR) ahne algoritmiga ja libalõõmutamist (LL), ning võrrelda nende meetodite efektiivsust. Tööd hakatakse kasutama õppematerjalina aine Tehisintellekt I õpetamisel. Ristsõna koostamine on üks tehisintellekti probleemidest, mis kuulub NP-täielike klassi. Seega hea lahenduse leidmine nõuab palju ressursse ja aega. Aga eksisteerivad meetodid, mis võimaldavad lahenduse leidmise aega vähendada. Nende hulgas on ka KR ja LL. KR kasutades seatakse antud ülesandele kitsendusi, mis teevad lahendamise lihtsamaks. Ristsõna koostamisel kehtivad järgmised kitsendused: 1.Sõna ei saa olla lühem, kui ruutude järjend, kuhu seda pannakse. 2.Sõna ei saa olla pikem, kui ruutude järjend, kuhu seda pannakse. 3.Kui järjendis on mõned tähed juba olemas, siis sõna, mis pannakse sellesse järjendisse, peab neid tähti sisaldama täpselt nendel samadel positsioonidel ja ei saa sisaldada mingeid teisi tähti nendel positsioonidel. Kui sõna rahuldab neid tingimusi, siis teda võetakse vastu ning ahne algoritm otsustab, kasutades heuristilist funktsiooni, kas see sõna on parim lahendus selles olukorras.Niiviisi püüab programm lõpliku sammude hulgaga optimaalse lahenduseni jõuda. LL töötab nii: antud on suvaline algseisund s, leida tema naaberseisund s', kui uus seisund on jooksvast seisundist parem, siis valida see, aga kui leitud seisund on jooksvast seisundist halvem, siis kasutada tõenäosus funktsiooni P, et otsustada, kas valida seda seisundit või mitte. Sellist operatsiooni korratakse kuni rahuldav lahendus on leitud või algoritm on juba teinud lubatud arvu samme. Tõenäosus, et algoritm valib uueks seisundiks halvema seisundi väheneb aja jooksul (kooskõlas nn temperatuuri alanemisega). Meetodeid on testitud ja võrreldid, kasutades erinevaid heuristikuid.
The main goal of this thesis is to create a program that allows constructing crosswords, using two different algorithms. Given a grid and a text file with words (dictionary), the program should search for suitable words from a dictionary to fill the grid. The program should be able to complete this task in two different ways, in this case using constraint satisfaction method (CSM) with greedy algorithm and simulated annealing. Afore-mentioned algorithms were chosen mainly for educational purposes, since construction of the fastest algorithm is not a goal of this work. Along with other similar Artificial Intelligence problems, like N queens problem, map colouring and Sudoku solving (which is also NP-complete problem), crossword construction is a good example of simple, yet nontrivial task. The choice of CSM with greedy algorithm is obvious. If there are no constraints, the program will simply try to fill each entry by placing up to all, and that means also the words that are of inappropriate length, words in vocabulary until it finds first suitable or runs out of words. For example, by putting constraints on words length and already filled letters, the construction time can be drastically reduced. The simulated annealing was chosen with intention to show that the same problem can be solved in different ways and also to illustrate the difference in algorithm processing and its effectiveness. In addition, simulated annealing is quite similar to greedy algorithm, thus making their comparison a bit easier, but more interesting.

Description

Keywords

Citation