Úloha #306
Autor:IOAI Committee
Obtížnost
Vaše nejlepší skóre
N/A
V sedmnáctém století se John Wilkins pokusil vytvořit dokonalý jazyk: název věci měl odhalovat její místo v klasifikaci založené na rozlišeních YES/NO.
Projekt byl opuštěn, ale neznámý písař pokračoval ve shromažďování zvířat v obrovském Kabinetu rozlišení. Každá zásuvka ukrývá tvora. Štítky se ztratily a mosazná mřížka na každé zásuvce odpovídá pouze na binární otázky týkající se animal uvnitř.
Z archivu se dochovaly následující záznamy:
animals_pool.txt — 250 zvířat, která se mohou objevit v Kabinetu;questions_pool.csv — 280 povolených otázek;oracle_table.csv — neměnné responses orákula pro každou dvojici (animal, question).Musíte vytvořit adaptivní strategii, která identifikuje animal pomocí co nejmenšího počtu volání.
V interaktivní verzi by program postupně volal:
interactor.ask(question) # -> "yes" / "no"interactor.guess(animal) # -> "correct" / "wrong"V současné verzi však platforma nespouští interaktor v reálném čase. Proto musíte odevzdat rozhodovací strom, který by váš program vykonal. Vyhodnocovací systém začne v uzlu 0, získá odpověď ze soukromého orákula a pro každou answer pokračuje odpovídající větví.
Strom může být ve skutečnosti orientovaným grafem: více větví může vést do stejného uzlu. Cykly nejsou užitečné, protože každá návštěva uzlu spotřebuje jedno volání a rozpočet je přísný.
animals_pool.txtNa každém řádku je jeden název animal. Tipovat lze pouze tyto názvy.
questions_pool.csv| Sloupec | Význam |
|---|---|
question_id | identifikátor ve tvaru Q0001 |
question | text question |
kind | semantic nebo lexical |
Sémantické otázky popisují biologické nebo ekologické vlastnosti. Lexikální otázky popisují anglický název uchovávaný v katalogu. Oba typy jsou platnými otázkami Kabinetu.
oracle_table.csv| Sloupec | Význam |
|---|---|
animal | kandidátní animal |
responses | binární řetězec v pořadí odpovídajícím souboru questions_pool.csv |
Znak na pozici i je answer orákula na question na řádku i:
1 = yes;0 = no.Orákulum je deterministické a neměnné. Tabulka zachycuje jeho přesvědčení, nikoli dokonalou zoologickou znalostní bázi, takže některé odpovědi mohou být diskutabilní. Řešení musí optimalizovat strategii pro skutečné responses uložené v tabulce.
Nahrajte archiv s následující strukturou:
submission.zip└── submission.csvSoubor submission.csv musí být umístěn v kořenovém adresáři archivu. Archiv nesmí obsahovat žádné další soubory.
Soubor CSV musí obsahovat přesně následující sloupce:
id,subtaskID,answerid — jedinečný číselný identifikátor uzlu;subtaskID — vždy 1;answer — popis uzlu.Kořenový uzel musí mít id = 0.
Nenahrávejte přímo soubor
submission.csv. Platforma musí obdržet archivsubmission.zip.
Q|question_id|yes_node|no_nodePříklad:
0,1,Q|Q0001|1|2Pokud je answer na Q0001 yes, vyhodnocovací systém pokračuje do uzlu 1; jinak pokračuje do uzlu 2.
G|animal|wrong_nodePříklad:
1,1,G|agouti|3Vyhodnocovací systém se zeptá: „Je animal agouti?“ Pokud je guess correct, případ končí. Pokud je guess wrong, vyhodnocování pokračuje v uzlu 3.
Speciální hodnota END znamená, že se strategie vzdává:
2,1,G|alligator gar|ENDProtože pole
answerobsahuje znak|, no vyžadováno žádné speciální escapování CSV. Názvy zvířat neobsahují znak|.
Pro každé skryté animal je povoleno nejvýše 15 volání.
Každý navštívený uzel spotřebuje právě jedno volání:
Q spotřebuje jedno volání;G spotřebuje jedno volání bez ohledu na to, zda je guess correct, nebo wrong.Po 15th volání případ automaticky končí.
Pro každé animal:
score_case = max(0, (1 if guessed correctly, otherwise 0) - 0.02 × calls_used)Příklady:
0.98;0.90;0.70;0.Konečné skóre je:
100 × mean(score_case)Teoretické maximální skóre je 98, protože i okamžitý correct guess spotřebuje jedno volání.
20,000 uzlů;0 musí existovat;question_id musí existovat v souboru questions_pool.csv;animals_pool.txt;submission.csv.Obsah souboru submission.csv:
id,subtaskID,answer0,1,Q|Q0001|1|21,1,G|agouti|END2,1,G|alligator gar|ENDTato strategie položí jednu question a poté provede jeden guess. Vyřeší pouze případy, ve kterých se oba listy shodují se skrytým animal.
log2(250) ≈ 7.97. V ideálním stromu by přibližně osm binárních odpovědí stačilo k rozlišení mezi 250 zvířaty, dostupné otázky však množinu kandidátů nerozdělují vždy dokonale na poloviny.
Užitečnou strategií je:
yes a no;Úloha je adaptací ONIA notebooku Domácí úloha 3 — Analytický jazyk, jehož autorem je John Wilkins, zveřejněného v repozitáři IOAI 2026. Interaktor založený na LLM byl nahrazen neměnným orákulem, aby vyhodnocování zůstalo rychlé a deterministické.