Edmonds–Prus- protokolla on reilu kakkuleikkausprotokolla . Sen tavoitteena on saada heterogeenisen resurssin osittain verrannollinen jako n henkilön kesken siten, että jokainen osallistuja saa kakun (palan) osajoukon, jonka kukin osallistuja arvioi vähintään 1/ an koko estimaatista, jossa on jokin riittävän suuri vakio . Algoritmi on todennäköisyydellä ajoajalla O( n ) onnistumistodennäköisyydellä lähellä 1. Protokollan kehittivät Jeff Edmond ja Kirk Prus, jota he myöhemmin paransivat Jaisingh Solankin kanssa.
Kakun suhteellinen jako saadaan aikaan käyttämällä rekursiivista puolittamisalgoritmia ajassa . Jotkut tulokset monimutkaisuudesta osoittavat, että tämä ajoaika on optimaalinen useilla oletuksilla. Erityisesti rekursiivinen puolittaminen on nopein algoritmi täyden suhteellisuuden saamiseksi, kun palat on yhdistettävä, ja se on nopein mahdollinen deterministinen algoritmi jopa osittaisen suhteellisuuden saavuttamiseksi ja jopa silloin, kun se on sallittua leikata irrotettuihin osiin. On tapaus, jota monimutkaisuuden tulokset eivät kata, tämä on todennäköisyysalgoritmien tapaus, jotka takaavat vain osittaisen suhteellisuuden ja mahdollisuuden katketa osia . Edmonds-Prus-protokolla pyrkii tarjoamaan O( n ) käyntiajan juuri tätä tapausta varten.
Yleinen kaavio Edmundsin ja Pruksen mukaan on seuraava [1] :
Algoritmi takaa, että suurella todennäköisyydellä jokainen osallistuja saa vähintään puolet ehdokaskappaleestaan, mikä tarkoittaa (jos preferenssifunktiot ovat additiivisia), että arvo on vähintään .
Vaiheessa #5 on O( n ) ehdokaskappaletta ja O( n ) lisäleikkausta, jotka vievät O(1) aikaa. Siksi algoritmin kokonaisajoaika on O( n ).
Tämän kaavion päätehtävä on viimeisten kappaleiden valinta vaiheessa #4:
Aloitetaan luomalla leikkauskuvaaja , graafi, jonka kärjet ovat puolifinaalipalat, ja kaari jäsenen i palasta I jäsenen j palaan J on olemassa, jos pala I leikkaa jäsenen j kappaleen J (siis jos valitsemme pala I ja haluamme välttää risteyksiä, meidän on valittava myös pala J ).
Valitaan mielivaltainen osallistuja i , joka ei ole vielä saanut palaansa, ja valitaan tämän osallistujan mielivaltainen pala I lopulliseksi kappaleeksi. Sitten käydään läpi leikkauskaavion yhteys ja valitaan lopullisiksi kappaleiksi kaikki palat, jotka saavutetaan kärjestä I . On olemassa kaksi hyvää skenaariota - joko jaamme yhden lopullisen palan kullekin osallistujalle ja näin suoritamme toimenpiteen tai saavutamme palan, jolla ei ole lähteviä linkkejä (eli se ei leikkaa muita kappaleita). Jälkimmäisessä tapauksessa valitsemme vain toisen kappaleen yhdestä jäljellä olevista jäsenistä ja jatkamme. Huono skenaario tapahtuu, kun matkamme johtaa kahteen eri palaan samaa jäsentä tai vastaavasti eri palaan jäsentä i , josta aloitimme matkan. Tällaista polkua, joka johtaa osallistujan i palasta saman osallistujan toiseen osaan, kutsutaan paripoluksi . Jos leikkausgraafi ei sisällä parillisia polkuja, niin kuvattu algoritmi palauttaa joukon n ei-päällekkäistä loppuosaa, ja meillä on haluttu tulos. Nyt on vielä laskettava todennäköisyys, että leikkauskaavio sisältää parillisen polun.
Harkitse ensin erikoistapausta, jossa kaikilla osallistujilla on samat mieltymystoiminnot (ja siten sama joukko ehdokaskappaleita). Tässä tapauksessa parillisen polun todennäköisyys on helppo laskea, koska jokaisen kaaren todennäköisyys on 1/ an ja kaikki reunat ovat riippumattomia, joten tietyn pituisen k parillisen polun todennäköisyys on , ja minkä tahansa kaaren todennäköisyys. parillinen polku on enintään:
Valitsemalla d =1 ja riittävän suuren a , tämä todennäköisyys voidaan tehdä mielivaltaisen pieneksi. Tämä on totta, vaikka jätämme välierien valintavaiheen (nro 3) pois ja katsomme kaikki neljännesfinalistit semifinalisteiksi.
Huomaa, että tämä tapaus on samanlainen kuin pallot uurnassa mallissa . Tämä osoittaa, että jos kullekin pallolle valitaan mielivaltaisesti d urnaa, niin kullekin pallolle voidaan valita yksi uurna niin, että kaikki uurnat ovat erilaisia (pallojen enimmäismäärä on 1).
Yleisessä kakkumallissa, kun preferenssifunktiot ovat erilaiset, leikkauskaavion reunatodennäköisyydet ovat riippuvaisia, mutta puolifinalistien valintavaiheen ansiosta voimme osoittaa, että todennäköisyys, että leikkauskaavio sisältää parillisen polun, jonka pituus on vähintään 3 ei ylitä .
On vielä harkittava parillisia polkuja, joiden pituus on 2. Valitettavasti todennäköisyys saada tällainen parillinen polku leikkauskuvaajassa ei ole vähäpätöinen. Suurella todennäköisyydellä on kuitenkin mahdollista jakaa osallistujat kahteen ryhmään, joista kummallakaan ei ole paritettuja polkuja, joiden pituus on 2. Siksi voimme suorittaa lopullisten kappaleiden valinnan algoritmin kahdesti, kerran kullekin ryhmälle. Leikkaus voi tapahtua vain eri ryhmien lopullisten osien välillä, joten päällekkäisyys kakun kussakin kohdassa ei ylitä 2:ta. Todennäköisyys, että tällainen 2-osio on mahdoton , ei ylitä .
Kun on laskettu yhteen kaksi yllä olevaa lauseketta ja otettu d = 2, saadaan, että epäonnistumisen todennäköisyys pysyy . Muista, että a on suhteellisuussuhde – mitä suuremman arvon haluamme taata kullekin osallistujalle, sitä todennäköisemmin jako epäonnistuu ja se tulee aloittaa vaiheesta 1.
Jotkut algoritmit toimivat myös, jos leikkaukset ovat likimääräisiä, eli osallistujat eivät tiedä, ovatko merkityt palat yhtä suuret. He voivat merkitä kappaleen, jonka p -prosenttiarvo on vaaditun arvon ylä- tai alapuolella, ja tarkka virhe valitaan satunnaisesti [1] .
Voit edelleen vähentää epäonnistumisen mahdollisuutta käyttämällä seuraavaa kaaviota [2] :
Todennäköisyys tietyn osallistujan poistamiseen kustakin passista on . Tietyn osallistujan poistamisen todennäköisyys molemmilla ajoilla on yhtä suuri kuin . Siksi epäonnistumisen todennäköisyys on , ja se pyrkii nollaan n kasvaessa, vaikka osittaissuhteellisuussuhde a pidetään vakiona.
Kakkumallia voidaan pitää palloongelmamallin yleistyksenä [ . Tätä mallia käytetään laajasti esimerkiksi kuormituksen tasapainottamisessa . Näissä tilanteissa pallo edustaa työtä, joka voidaan osoittaa erilaisille koneille (terminologiamme mukaan uurnat). Karkeasti sanottuna identtisten koneiden kuorman jakautuminen on palloja ja uurnoja, ja epätasaisten koneiden kuorman jakautuminen leikkaa kakkua. Siksi on aivan selvää, että kakkumallilla ja Edmonds-Prus-protokollalla pitäisi olla mielenkiintoisia sovelluksia kuormituksen jakautumisen kannalta erilaisissa koneissa [1] .