Citat:
Ursprungligen postat av
Yukno
Kan du förklara lite varför? Kanske är jag som börjar bli trött som gör att jag inte greppat detta ännu.
Ganska enkelt om du tänker på det.
Kolla på bilden jag laddade upp:
http://imgur.com/a/sCdI7
Låt oss säga att snubbe 1 är den snubben som ska prioritera sin högra gaffel. Två saker kan hända:
1: Snubbe 1 försöker ta gaffeln till höger om sig men snubbe 5 hinner ta den först (då den gaffeln är snubbe 5s vänstra gaffel), ingen av dessa personer kommer få äta om både snubbe 4, 3 och 2 lyckas ta sin vänstra gaffel. Snubbe 2 kommer dock fortfarande kunna ta sin högra gaffel eftersom att det är snubbe 1s vänstra.
När snubbe 2 har ätit klart och lägger ner sina gafflar så kommer snubbe 3 börja äta eftersom att hans högra gaffel är nu ledig. Snubbe 1 kommer i det här fallet vara den sista som kommer få äta.
2: Snubbe 1 får tag på sin högra gaffel först, vilket betyder att snubbe 5 inte kommer få börja äta. Snubbe 2 kommer plocka sin vänstra gaffel vilket betyder att snubbe 1 kan utan problem plocka sin vänstra (vilket blir snubbe 2s högra) och börja äta. Även om snubbe 2 hinner ta både sin vänstra och högra så kommer någon alltid att äta klart.
Så algoritmen fungerar så länge någon får äta, då kommer alltid alla andra att få äta också.
Om alla hade prioriterat den vänstra gaffeln så hade det förr eller senare blivit en deadlock då alla hade haft en gaffel i vänstra handen men ingen i den högra och ingen hade släppt sin gaffel tills att de hade fått en i den högra...