260 likes | 387 Views
Kósa Márk Debreceni Egyetem Informatikai Kar Információ Technológia Tanszék. Keresőalgoritmusok az ACM versenyeken. 7. Gyires Béla Informatikai Nap Debrecen , 200 6. december 15. Múlt és jelen. az 1. verseny Texas, Baylor University, 1970 a 31. verseny 5 földrész 42 régió 82 ország
E N D
Kósa Márk Debreceni Egyetem Informatikai Kar Információ Technológia Tanszék Keresőalgoritmusokaz ACM versenyeken 7. Gyires Béla Informatikai Nap Debrecen, 2006. december 15.
Múlt és jelen • az 1. versenyTexas, Baylor University, 1970 • a 31. verseny • 5 földrész • 42 régió • 82 ország • 1818 egyetem és főiskola • 6077 háromfős csapat • regionális selejtezők2006. szeptember-december • világdöntőHilton Tokyo Bay Hotel2007. március 12-16. Keresőalgoritmusok az ACM versenyeken
Szabályok • angol nyelvű • maximum 3 fős csapatok • 1 számítógép • papír alapú segédeszközök • 7-12 feladat • 5 óra versenyidő • hossz-, idő- és memóriakorlátok • értékelés büntetőpontokkal • on-line zsűri Keresőalgoritmusok az ACM versenyeken
Témakörök • sztringek, mintaillesztés • rendezések • aritmetika és algebra • kombinatorika • számelmélet • visszalépéses keresés • gráfalgoritmusok • dinamikus programozás • geometria Keresőalgoritmusok az ACM versenyeken
A leggyakrabban előforduló keresőalgoritmusok • Visszalépéses keresők • alap változat – fa gráf, összes megoldás • úthosszkorláttal működő változat • körök előfordulását ellenőrző változat • ág és korlát algoritmus – optimális megoldás • Gráfkereső algoritmusok • mélységi kereső • szélességi kereső – azonos költségű operátorok esetén • optimális kereső (Dijkstra algoritmusa) – különböző költségű operátorok esetén • heurisztikus keresők Keresőalgoritmusok az ACM versenyeken
Fél meg fél egy egész • adott a 2 törtszám számjegyeit jelző 10 darab téglalap • a téglalapokba különböző számjegyeket kell írni 0-tól 9-ig Feladat: Töltsük ki a téglalapokat úgy, hogy az egyenlőség teljesüljön! Adjuk meg az összes lehetséges megoldást! Keresőalgoritmusok az ACM versenyeken
Fél meg fél egy egész 38 / 76 = 145 / 290 38 / 76 = 451 / 902 45 / 90 = 138 / 276 45 / 90 = 186 / 372 45 / 90 = 381 / 762 46 / 92 = 185 / 370 48 / 96 = 135 / 270 48 / 96 = 351 / 702 13 / 26 = 485 / 970 15 / 30 = 486 / 972 16 / 32 = 485 / 970 27 / 54 = 309 / 618 29 / 58 = 307 / 614 31 / 62 = 485 / 970 35 / 70 = 148 / 296 35 / 70 = 481 / 962 Keresőalgoritmusok az ACM versenyeken
A raktár • karika: -7 ügynök, E betű: kijárat, 2-3-4: álló dobozok, üres mező: föld, piros szín: ledöntött doboz • maximum 8×8-as tábla Feladat: Adjuk meg, hogy legkevesebb hány lépésben juthat el -7 ügynök a kijárathoz anélkül, hogy a földre lépne! Keresőalgoritmusok az ACM versenyeken
Ah Ce Emm - kínai hazárdjáték Feladat: Adott egy csomó kavics, amelyet a következő négy szabály tetszőleges sorrendű ismételt alkalmazásaival el kell tüntetni: • Tűz: Ha legalább 11 kavicsunk van, akkor eldobhatunk pontosan 11 kavicsot x1 jüan befizetése után. • Sárkány: Ha a kavicsok száma osztható 3-mal, akkor eldobhatjuk a kavicsoknak pontosan az egyharmadát, minden eldobott kavicsért 1 jüant fizetve. • Sas: Kérhetünk 7 új kavicsot x2 jüanért. • Bátorság: Megduplázhatjuk a kavicsaink számát, és kaphatunk még egyet ráadásként, minden új kavicsért 1 jüant fizetve. Kavicsaink száma sohasem haladhatja meg a kiinduló darabszámot. Mekkora az a legkisebb összeg, amennyiért el tudjuk tüntetni az összes kavicsunkat? Keresőalgoritmusok az ACM versenyeken
Huszárcsere • 33-as sakktábla • két világos, két sötét huszár • szabályos lólépések Feladat: Cseréljük meg szabályos lépésekkel a világos huszárokat a sötétekkel, és adjunk meg egy, a helycserét megvalósító lépéssorozatot! Keresőalgoritmusok az ACM versenyeken
Első állapottér-reprezentáció • 1 kezdőállapot • 4 célállapot • 32 Ugrás(ló, sor, oszlop) alakú operátor, melyből egy adott állapotra legfeljebb 8 alkalmazható Keresőalgoritmusok az ACM versenyeken
Második állapottér-reprezentáció • 1 kezdőállapot • 1 célállapot • 16 Ugrás(x, y, u, v) alakú operátor, melyből egy adott állapotra legfeljebb 8 alkalmazható Keresőalgoritmusok az ACM versenyeken
Harmadik állapottér-reprezentáció • 1 kezdőállapot • 1 célállapot • 8 Ugrás(sorszám) alakú operátor, melyből egy adott állapotra legfeljebb 8 alkalmazható Keresőalgoritmusok az ACM versenyeken
Megoldások keresése, eredmények Keresőalgoritmusok az ACM versenyeken
Számgyűrű • 9 karika gyűrűszerű elrendezésben • a karikákba különböző egész számokat kell írni 1-től 9-ig • két szomszédos karika értékének összege nem lehet sem 3-mal, sem 5-tel, sem 7-tel osztható Feladat: Töltsük ki a számgyűrű karikáit! Keresőalgoritmusok az ACM versenyeken
Első állapottér-reprezentáció • egy apró trükk: 10 pozíció a 9 számhoz, ahol az utolsó pozícióban lévő szám értéke megegyezik az első pozícióban lévőével • 1 kezdőállapot • a célállapotok halmazát célfeltétellel definiáljuk • 36 Cserél(poz1, poz2) alakú operátor, alkalmazási előfeltétel nélkül Keresőalgoritmusok az ACM versenyeken
Második állapottér-reprezentáció • ugyanaz, mint az 1. állapottér-reprezentáció, azzal a különbséggel, hogy • a Cserél(poz1, poz2) alakú operátornak van alkalmazási előfeltétele: nem cserélhetjük a sorozat elején lévő olyan számokat, amelyek már kielégítik a célfeltételt Keresőalgoritmusok az ACM versenyeken
Harmadik állapottér-reprezentáció • ugyanaz, mint az 1. állapottér-reprezentáció, azzal a különbséggel, hogy • a Cserél(poz1, poz2) alakú operátornak van alkalmazási előfeltétele: a csere csak olyan pozíciók esetén megengedett, ahol a számok még nem teljesítik a célfeltételt Keresőalgoritmusok az ACM versenyeken
Negyedik állapottér-reprezentáció • 9 pozíció a 9 szám részére • 1 kezdőállapot • minden állapotban az első pozíción lévő szám értéke rögzített (1), a többi ettől különböző, kezdetben 0 • megjegyezzük az első üres (0 értékű) pozíciót • a célállapotok halmazát célfeltétellel definiáljuk • 8 Kiír(szám) alakú operátor egy meglehetősen erős alkalmazási előfeltétellel Keresőalgoritmusok az ACM versenyeken
Megoldások keresése, eredmények Keresőalgoritmusok az ACM versenyeken
Következtetések,megfontolandó gondolatok • fontos a megoldandó probléma alapos ismerete • fontos az alkalmazható problémamegoldási technikák ismerete • fontos valamilyen programozási nyelv és/vagy eszköz ismerete • mindezek beilleszthetők a tantervi órák tematikáiba, gyakoroltathatók és taníthatók • a hallgatók részéről van igény ezekre az ismeretekre és ezekre a versenyekre Keresőalgoritmusok az ACM versenyeken
Hivatkozott URL-ek • ACM: Association for Computing Machinery, http://www.acm.org • The ACM-ICPC International Collegiate Programming Contest Web Site, http://icpc.baylor.edu • Central European Programming Contest, http://icpc.cs.bme.hu • Problem Set Archive, http://online-judge.uva.es • The 2000's ACM-ICPC Live Archive Around the World, http://acmicpc-live-archive.uva.es/nuevoportal/ Keresőalgoritmusok az ACM versenyeken
Irodalomjegyzék • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Új algoritmusok, Scolar, 2003 • Juhász István, Kósa Márk, Pánovics János: C példatár, Panem, 2005 • Steven S. Skiena, Miguel A. Revilla: Programming Challenges, Springer, 2003 • Steven S. Skiena: The Algorithms Design Manual, Springer, 1998 • Kósa Márk, Nagy Benedek, Pánovics János: Megoldáskereső algoritmusok hatékonyságának vizsgálata az állapottér-reprezentációk függvényében, SzámOkt 2006 Konferencia, Szováta, 2006. május 25-28. Keresőalgoritmusok az ACM versenyeken
Köszönöm a figyelmet! Keresőalgoritmusok az ACM versenyeken