Uzdevums #308
Autors:IOAI 2026 Organizing Team
Grūtības pakāpe
Jūsu labākais rezultāts
Nav pieejams
Iedomājieties Atšķirību kabinetu, kura atvilktnēs atrodas paslēpti dzīvnieki. Jūs nevarat atvērt atvilktni, taču varat izmantot ask, lai uzdotu orākulam jautājumus ar atbildēm “yes” vai “no”, un pēc tam izmantot guess, lai mēģinātu noteikt animal nosaukumu.
Mērķis ir identificēt katru animal, izmantojot pēc iespējas mazāk izsaukumu. Šī ir interaktīva identificēšanas problēma, kas līdzinās spēlei “Divdesmit jautājumi”: katrai atbildei jāsamazina iespējamo dzīvnieku kopa, un labākais nākamais question parasti būs atkarīgs no līdz šim saņemtajām atbildēm.
Ir publicētas divas pilnas kopas:
animals_pool.txt: 1,472 dzīvnieki, kurus drīkst piedāvāt;questions_pool.txt: 559 jautājumi ar atbildēm “yes” vai “no”.Paslēptam animal sākotnējā problēma nodrošina šādas operācijas:
| Operācija | Atgrieztā vērtība | Nozīme |
|---|---|---|
ask(question) | "yes" vai "no" | Uzdod question no questions_pool.txt. |
guess(animal) | "correct" vai "wrong" | Piedāvā animal no animals_pool.txt. correct piedāvājums pabeidz kārtu. |
Abas operācijas patērē vienu izsaukumu. Kopējais budžets ir 15 izsaukumi katram paslēptajam animal, ieskaitot galīgo guess. Vērtība, kas nepieder attiecīgajai kopai, tiek noraidīta, nepatērējot izsaukumu.
MLCompete platformā adaptīvā stratēģija tiek izteikta kā galīgs lēmumu grafs failā policy.json. ask mezgls sazarojas atbilstoši orākula yes/no atbildei. guess mezgls pabeidz kārtu, ja piedāvājums ir correct; pretējā gadījumā tiek izmantota wrong šķautne. stop mezgls pabeidz kārtu, to neatrisinot.
Šis deklaratīvais attēlojums ir līdzvērtīgs deterministiskai adaptīvai solve politikai vienam animal: katrs lēmums var būt atkarīgs no visas atbilžu vēstures. Randomizētai stratēģijai pirms eksportēšanas fiksējiet nejaušo sākumvērtību. Vērtēšanas laikā netiek izpildīts dalībnieka iesniegts kods.
Orākula pamatā ir Qwen/Qwen2.5-3B-Instruct, kas piesaistīts revīzijai aa8e72537993ba99e69dfaafa59ed015b17504d1. Katram animal–question pārim no vērtētājam nepieciešamās privātās vērtēšanas organizatori izmanto precīzu oficiālo uzvedni:
You are answering a question about one specific animal.The animal is: {animal}.Answer with a single word, yes or no.Question: {question}Paketē iekļautais oficiālais fails interactor.py ir saglabāts nemainīts un nepiesaista Hugging Face revīziju. Lai pēc iespējas precīzāk reproducētu platformas orākulu, nododiet iepriekš norādīto revīziju gan AutoTokenizer.from_pretrained, gan AutoModelForCausalLM.from_pretrained un izmantojiet reģistrēto vidi.
Atšķirīga aparatūra vai skaitliskās bibliotēkas joprojām var mainīt alkatīgās izvēles bitu tuvu neizšķirtam rezultātam; platformas iesaldētā matrica paliek noteicošā, savukārt lokālā secināšana ir tikai šīs matricas prognoze.
Efektīva pieeja ir iepriekš aprēķināt animal–question tabulu, saglabāt kandidātus, kas ir saderīgi ar novērotajām atbildēm, un izvēlēties question, kas atlikušo kandidātu kopu sadala pēc iespējas vienmērīgāk.
Publiskajā paketē ir:
animals_pool.txt un questions_pool.txt;dev.csv, kurā ir 150 publiski marķēti dzīvnieki;test1.csv, kurā ir 500 publiski marķēti dzīvnieki;interactor.py un evaluate.py faili lokāliem eksperimentiem;validate_submission.py, savrups ZIP un politikas validators;dev.csv un test1.csv ir savstarpēji nepārklājošas publiskas kopas, kas paredzētas lokālai vērtēšanai, nevis slepeni līderu tabulas dati. Privātā MLCompete kopa tiek veidota tikai no tiem 822 dzīvniekiem failā animals_pool.txt, kuri nav atrodami nevienā no abiem publiskajiem CSV failiem. Tajā ir 128 unikāli dzīvnieki: 32 veido aktuālo/daļējo kopu, bet vēl 96, kas nepārklājas ar pirmo grupu, veido galīgo/pilno kopu. To precīzs sastāvs un vērtēšanas secība netiek izpausta.
Oficiālais fails evaluate.py palaiž Python MySolution implementāciju sākotnējā formātā; tas nelasa un nevalidē arhīvu, kurā ir policy.json. Pirms augšupielādes izmantojiet validate_submission.py.
Iesniedziet ZIP arhīvu, kas satur tieši vienu failu arhīva root:
policy.jsonDirektoriji, simboliskās saites, ceļu dublikāti un papildu faili nav atļauti. policy.json jābūt UTF-8 JSON dokumentam, kas izmanto šādu schema:
ioai-2026-animal-policy-v1Kamēr sacensības ir aktīvas, platforma pieprasa arī atsevišķu pirmkoda pielikumu. Šajā laukā augšupielādējiet pirmkoda failu, piezīmju grāmatu vai pirmkoda arhīvu, kas izmantots policy.json izveidei. Organizatori to saglabā pārbaudei; vērtētājs to neizpilda, un tas nedrīkst būt iekļauts iesnieguma ZIP arhīvā.
Identifikatori ir nulles bāzes rindu indeksi oficiālajās normalizētajās kopās:
question: vesels skaitlis no 0 līdz 558;animal: vesels skaitlis no 0 līdz 1471;nodes;null šķautne: stop, nepatērējot vēl vienu izsaukumu.Precīzie mezglu formāti ir:
{"type":"ask","question":17,"yes":4,"no":5}{"type":"guess","animal":903,"wrong":8}{"type":"stop"}Arhīvā drīkst definēt ne vairāk kā 32,767 nodes. Katrai atsaucei jānorāda uz esošu mezglu. Nezināmas atslēgas, JSON atslēgu dublikāti, nederīgi skaitļi un nepareizi kopu jaucējkodi padara iesniegumu nederīgu.
{ "schema": "ioai-2026-animal-policy-v1", "animals_sha256": "87eb93cc5d2a238a38daaeb201c394db935153cc17b03a44a7642f0db9ff35dc", "questions_sha256": "d2bd060866382f3dd1329112e73fbd6bf2397352d02469434b7b3d199bd2ca62", "root": 0, "nodes": [ {"type": "ask", "question": 0, "yes": 1, "no": 2}, {"type": "guess", "animal": 0, "wrong": null}, {"type": "stop"} ]}Piemērs uzdod pirmo publicēto question. Pēc yes tas piedāvā pirmo publicēto animal; pēc no tas apstājas.
Katram privātajam animal vērtētājs sāk pie root ar nulli izsaukumu un iteratīvi šķērso grafu:
ask: patērē vienu izsaukumu, nolasa iesaldēto orākula bitu un pēc tam seko yes vai no;guess: patērē vienu izsaukumu; sekmīgi beidzas, ja piedāvājums ir correct, pretējā gadījumā seko wrong;stop vai null: pabeidz kārtu, to neatrisinot un nepatērējot izsaukumu.Šķērsošana apstājas pēc 15 patērētiem izsaukumiem, pat ja grafā ir vēl viena izejoša šķautne. Ciklus droši ierobežo šis budžets.
Vienam paslēptam animal:
round_score = max(0, (1 if the animal was found, otherwise 0) - 0.02 × number_of_calls)Piemēri:
0.98;0.90;0.70;0.Abas neapstrādātās metrikas tiek aprēķinātas neatkarīgi:
partial_metric = mean(round_score for the 32 live animals)full_metric = mean(round_score for the 96 final animals)partial_score = 100 × partial_metricfull_score = 100 × full_metricKamēr sacensības ir aktīvas, parastie dalībnieki redz tikai daļējo rezultātu. Pilnais rezultāts paliek paslēpts un pēc sacensību beigām kļūst par galīgo līderu tabulas metriku. Tas ir vidējais rādītājs pilnās kopas 96 rindās, nevis apvienotais vidējais rādītājs visās 128 rindās. Katram parādītajam rezultātam maksimālā iespējamā vērtība ir 98.00, jo pat pirmais correct guess patērē vienu izsaukumu.
Izveidojiet un lokāli pārbaudiet stratēģiju, izmantojot oficiālās kopas un iesaldēto orākulu. Eksportējiet katru lēmumu kā ask, guess vai stop mezglu, aizstājiet zarus, kas pārsniedz 15 izsaukumu horizontu, ar null vai stop un, ja nepieciešams, apvienojiet identiskus apakšgrafus, lai nepārsniegtu mezglu ierobežojumu.
Vērtējamajā ZIP arhīvā ievietojiet tikai policy.json. Atsevišķi obligātajā pirmkoda laukā augšupielādējiet politiku konstruējošās programmas pirmkodu vai atbilstošo piezīmju grāmatu. Neaugšupielādējiet modeļa svarus vai iepriekš aprēķinātas orākula tabulas.
Pirms augšupielādes palaidiet:
python3 validate_submission.py submission.zipAdaptēts ar atļauju no “Analītiskā valoda, kuras autors ir John Wilkins” (IOAI 2026 mājas uzdevums 3). Skatiet oficiālo piezīmju grāmatu.
Deklaratīvais politikas arhīvs, platformas privātā kopa un iesaldētais iepriekš aprēķinātais orākuls ir MLCompete adaptācijas. Uzdevuma prasības, uzvedne, atļautās vērtību kopas, 15 izsaukumu budžets un vērtēšanas formula atbilst oficiālajiem materiāliem.