Protokol Edmonds–Prus je spravedlivý protokol pro krájení koláčů . Jeho cílem je získat částečně proporcionální rozdělení heterogenního zdroje mezi n lidí tak, aby každý účastník obdržel podmnožinu koláče (kus), kterou každý účastník odhadne alespoň na 1/ an úplného odhadu, kde je nějaká dostatečně velká konstanta . Algoritmus je pravděpodobnostní s dobou běhu O( n ) s pravděpodobností úspěchu blízkou 1. Protokol vyvinuli Jeff Edmond a Kirk Prus, který později vylepšili Jaisingh Solanki.
Proporcionální dělení koláče lze získat pomocí algoritmu rekurzivního půlení v čase . Některé výsledky týkající se složitosti ukazují, že tato doba běhu je optimální pro širokou škálu předpokladů. Zejména rekurzivní půlení je nejrychlejší algoritmus pro získání plné proporcionality, když kusy musí být spojeny, a je to nejrychlejší možný deterministický algoritmus pro dosažení i částečné proporcionality, a to i v případě, že je dovoleno řezat na rozpojené kusy. Existuje případ, který není pokryt výsledky složitosti, jedná se o případ pravděpodobnostních algoritmů , které zaručují pouze částečnou proporcionalitu a možnost rozpojených kusů . Protokol Edmonds-Prus má za cíl poskytnout provozní dobu O( n ) právě pro tento případ.
Obecné schéma podle Edmundse a Pruse je následující [1] :
Algoritmus zaručuje, že s vysokou pravděpodobností každý účastník obdrží alespoň polovinu svého kandidáta, což znamená (pokud jsou preferenční funkce aditivní), že hodnota bude alespoň .
V kroku #5 je O( n ) kandidátských kusů a O( n ) dalších řezů, které zaberou O(1) čas. Celková doba běhu algoritmu je tedy O( n ).
Hlavním úkolem v tomto schématu je výběr finálních kusů v kroku #4:
Začněme vytvořením průsečíkového grafu, grafu, jehož vrcholy jsou semifinálové části, a oblouk z části I členu i do části J členu j existuje, pokud část I protíná J část členu j (pokud tedy zvolíme kus I a chceme se vyhnout křižovatkám, musíme vybrat i kus J ).
Vyberme libovolného účastníka i , který ještě nedostal svou figurku, a jako finální figurku zvolíme libovolnou figurku I tohoto účastníka. Poté projdeme spojení v průsečíkovém grafu a vybereme jako finální dílky všechny dílky, které jsou dosaženy z vrcholu I . Existují dva dobré scénáře – buď každému účastníkovi rozdáme jeden finální díl a tím dokončíme proceduru, nebo se dostaneme k dílu, který nemá žádné odchozí vazby (což znamená, že neprotíná další díly). V druhém případě jednoduše vybereme další kus z jednoho ze zbývajících členů a pokračujeme. Špatný scénář nastane, když naše cesta vede ke dvěma různým kouskům stejného člena, nebo ekvivalentně k jinému kousku členu i , ze kterého jsme cestu začali. Taková cesta vedoucí od jednoho kusu účastníka i k jinému kusu téhož účastníka se nazývá párová cesta . Pokud graf průniku neobsahuje párové cesty, pak popsaný algoritmus vrátí sadu n nepřekrývajících se finálních kusů a máme požadovaný výsledek. Nyní zbývá vypočítat pravděpodobnost, že graf průsečíku obsahuje spárovanou cestu.
Nejprve zvažte speciální případ, ve kterém mají všichni účastníci stejné preferenční funkce (a tedy stejnou sadu kandidátů). V tomto případě lze snadno vypočítat pravděpodobnost párové cesty, protože pravděpodobnost každého oblouku je 1/ an a všechny hrany jsou nezávislé, takže pravděpodobnost konkrétní spárované cesty délky k je a pravděpodobnost libovolného spárovaná cesta je maximálně:
Volbou d = 1 a dostatečně velkého a lze tuto pravděpodobnost libovolně snížit. To platí i v případě, že vynecháme semifinálovou fázi výběru (#3) a všechny čtvrtfinalisty považujeme za semifinalisty.
Všimněte si, že tento případ je podobný jako u koulí v modelu urny . To dokazuje, že pokud jsou urny vybrány pro každý míč libovolně, pak lze pro každý míč vybrat jednu urnu, takže všechny urny jsou různé (maximální počet míčků je 1).
V obecném modelu koláče, kdy jsou preferenční funkce různé, jsou pravděpodobnosti hran v grafu průniku závislé, ale díky fázi semifinalistického výběru můžeme ukázat, že pravděpodobnost, že graf průniku obsahuje párovou cestu délky při alespoň 3 nepřesahuje .
Zbývá uvažovat párové cesty délky 2. Bohužel pravděpodobnost získání takovéto párové cesty v grafu křižovatky není zanedbatelná. S velkou pravděpodobností je však možné rozdělit účastníky do dvou skupin, z nichž každá nemá spárované cesty délky 2. Algoritmus pro výběr finálních kusů tedy můžeme spustit dvakrát, pro každou skupinu jednou. K průsečíku může dojít pouze mezi konečnými kusy různých skupin, proto překrytí v každém bodě koláče nepřesáhne 2. Pravděpodobnost, že takový 2 oddíl není možný , nepřekročí .
Po sečtení dvou výše uvedených výrazů a převzetí d = 2 dostaneme, že pravděpodobnost selhání zůstává . Připomeňme, že a je poměr proporcionality – čím větší hodnotu chceme každému účastníkovi zaručit, tím je pravděpodobnější, že dělení selže a mělo by se začít od kroku č. 1.
Některé algoritmy také fungují, pokud jsou řezy přibližné, to znamená, že účastníci nevědí, zda jsou označené kusy stejné. Mohou označit kus s hodnotou p procent nad nebo pod požadovanou hodnotou a přesná chyba je vybrána náhodně [1] .
Pravděpodobnost selhání můžete dále snížit pomocí následujícího schématu [2] :
Pravděpodobnost odstranění konkrétního účastníka v každém průchodu je . Pravděpodobnost odstranění konkrétního účastníka v obou běhech je rovna . Pravděpodobnost selhání je tedy , a má tendenci k 0, jak n roste, i když poměr částečné úměrnosti a je udržován konstantní.
Model koláče lze považovat za zobecnění modelu problému s míčem . Tento model nachází široké uplatnění v oblastech, jako je vyvažování zátěže . Míč v těchto situacích představuje práci, kterou lze přiřadit různým strojům (v naší terminologii urny). Zhruba řečeno, rozložení zátěže identických strojů jsou koule a urny a rozložení zátěže nestejných strojů krájí dort. Proto je zcela jasné, že model koláče a protokol Edmonds-Prus by měly mít zajímavé aplikace z hlediska rozložení zátěže na odlišných strojích [1] .