Vinnaren i pepparkakshustävlingen!
2017-02-27, 15:29
  #1
Medlem
Hej!

Skulle behöva hjälp med den här uppgiften: https://puu.sh/umcuK/7add8bcbaa.png . Har ritat upp och kollat här: https://en.wikipedia.org/wiki/Dining...ophers_problem och det borde ju vara en som inte kan ta sin vänstra gaffel, innebär det då att det blir deadlock eller hur blir spåret?
Citera
2017-02-27, 15:44
  #2
Medlem
Seriöst. Var inte så slö att du inte ens orkar skriva av uppgiften när du vill ha hjälp. Om det är en massa grafer och liknande kan det vara förståeligt, men komplettera i så fall med att skriva av i forumet.

Hur ser ditt exempel ut som du har hittat?
Citera
2017-02-27, 16:12
  #3
Medlem
Utan att studerat den nya algoritmen något noggrannare så ska du nog ta detta med en nypa salt...
I ursprungsfallet där alla filosofer tar vänstergaffel först så är det fallet då alla tar upp sin vänstergaffel innan någon tar sin högergaffel som leder till deadlock. Detta fall undviker man i det fall där man låter en filosof ta högergaffeln först.
Citera
2017-02-27, 16:23
  #4
Medlem
Citat:
Ursprungligen postat av RulleRivare
Seriöst. Var inte så slö att du inte ens orkar skriva av uppgiften när du vill ha hjälp. Om det är en massa grafer och liknande kan det vara förståeligt, men komplettera i så fall med att skriva av i forumet.

Hur ser ditt exempel ut som du har hittat?

Sorry, är så van med att alltid ta bild för det är så smidigt med programmet nu när det är 2017 men ska skriva av i framtiden. Har bara ritat upp exemplet på wiki-sidan och sen ritat ut att en tar den högra och resten vänstra men det blir deadlock eftersom den till vänster om den som tar den högra ska då ta samma som den personen vilket inte går.

Citat:
Ursprungligen postat av DieTrolle
Utan att studerat den nya algoritmen något noggrannare så ska du nog ta detta med en nypa salt...
I ursprungsfallet där alla filosofer tar vänstergaffel först så är det fallet då alla tar upp sin vänstergaffel innan någon tar sin högergaffel som leder till deadlock. Detta fall undviker man i det fall där man låter en filosof ta högergaffeln först.

Men om en tar högergaffeln först så blir ju personen till vänster om den fast eftersom den vill ta sin vänstra(vilket är den högra för filosofen brevid som ska ta den)?
Citera
2017-02-27, 17:32
  #5
Medlem
Eftersom det inte finns nog med gafflar så måste det vara filosofer som måste vänta på sin tur.

Dvs alla kan aldrig äta samtidigt.

Deadlock är ju däremot om en eller flera aldrig någonsin kan äta.

Får nu en person tag i gaffel i höger hand medan de andra jagar gaffel med vänster hand så får ju denne filosofen jackpot - kan äta.

Till vänster om sig har han en filosof som har fått upp vänster gaffel och sedan fastnat. När förste filosof har ätit klart och lägger ner sina gafflar så kommer ju filosofen till vänster plötsligt ha tillgång till höger-gaffel. Så då får han äta.

När denne har ätit klart och lägger ner så får ju filosofen ytterligare till vänster tillgång till högergaffel och kan äta.

En lösning behöver alltså garantera att alla regelbundet får äta så de orkar tänka medan de väntar på gafflar igen.
Citera
2017-02-27, 18:09
  #6
Medlem
Citat:
Ursprungligen postat av cellplast
Eftersom det inte finns nog med gafflar så måste det vara filosofer som måste vänta på sin tur.

Dvs alla kan aldrig äta samtidigt.

Deadlock är ju däremot om en eller flera aldrig någonsin kan äta.

Får nu en person tag i gaffel i höger hand medan de andra jagar gaffel med vänster hand så får ju denne filosofen jackpot - kan äta.

Till vänster om sig har han en filosof som har fått upp vänster gaffel och sedan fastnat. När förste filosof har ätit klart och lägger ner sina gafflar så kommer ju filosofen till vänster plötsligt ha tillgång till höger-gaffel. Så då får han äta.

När denne har ätit klart och lägger ner så får ju filosofen ytterligare till vänster tillgång till högergaffel och kan äta.

En lösning behöver alltså garantera att alla regelbundet får äta så de orkar tänka medan de väntar på gafflar igen.

Hmm är inte helt med, när du säger "Till vänster om sig" så kan ju inte den personen få upp en vänster gaffel för den som han tänker ta är redan tagen av filosofen som får ta en höger gaffel?
Citera
2017-02-27, 19:48
  #7
Medlem
enowens avatar
Nej det blir ingen deadlock om personen som ska prioritera den högra gaffeln aldrig tar upp den vänstra innan han har fått en i högra handen.
Citera
2017-02-27, 21:07
  #8
Medlem
Citat:
Ursprungligen postat av enowen
Nej det blir ingen deadlock om personen som ska prioritera den högra gaffeln aldrig tar upp den vänstra innan han har fått en i högra handen.

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.
Citera
2017-02-27, 21:27
  #9
Medlem
enowens avatar
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...
__________________
Senast redigerad av enowen 2017-02-27 kl. 21:45.
Citera
2017-02-27, 21:41
  #10
Medlem
Citat:
Ursprungligen postat av enowen
Ganska enkelt om du tänker på det.
Om alla hade prioriterat den vänstra gaffeln och fått tag på en så hade alla bara suttit och väntat på att få tag på en gaffel i högra handen för att kunna sätta igång och äta. Då det är 5 personer och 5 gafflar så kommer ingen någonsin släppa sin vänstra gaffel och därav så kommer heller ingen någonsin börja äta = deadlock.

Om en person av personerna alltid ska prioritera den högra gaffeln medan de andra fyra ska försöka få den vänstra så kan två saker hända:

1: personen som ska försöka få tag på den högra gaffeln får aldrig den då personen bredvid som prioriterar den vänstra gaffeln om honom får den först, den personen kommer också få tag på sin högra gaffel då personen till höger om honom kommer vilja ha sin vänstra (därav är den högra alltid ledig). När han har käkat klart så kommer han att lägga ner gafflarna och då kan personen som prioriterar den högra gaffeln få tag på en till slut.

2: personen som kommer försöka få tag på den högra gaffeln tar den först och gå sedan vidare till att plocka den vänstra (då hans vänstra gaffel blir den högra gaffeln för personen som sitter till vänster om honom) och han kommer sätta igång och äta och sedan lägga ner gafflarna.

Så länge någon alltid får äta så kommer programmet aldrig att resultera i en deadlock.

Okej då börjar jag hänga med, men detta som du skrev "den personen kommer också få tag på sin högra gaffel då personen till höger om honom kommer vilja ha sin vänstra". Högra gaffeln där och vänstra gaffeln där är ju samma så vem tar den?
Men sen blir svaret alltså nej eftersom det aldrig blir en deadlock om det räcker med att någon får äta, för de kommer växla av varandra.
Citera
2017-02-27, 21:44
  #11
Medlem
enowens avatar
Citat:
Ursprungligen postat av Yukno
Okej då börjar jag hänga med, men detta som du skrev "den personen kommer också få tag på sin högra gaffel då personen till höger om honom kommer vilja ha sin vänstra". Högra gaffeln där och vänstra gaffeln där är ju samma så vem tar den?
Men sen blir svaret alltså nej eftersom det aldrig blir en deadlock om det räcker med att någon får äta, för de kommer växla av varandra.

Skrev om inlägget, nu har du en bild och en bättre förklaring.
Citera
2017-02-27, 22:12
  #12
Medlem
Citat:
Ursprungligen postat av enowen
Skrev om inlägget, nu har du en bild och en bättre förklaring.

Okej nu förstår jag allt, stort tack för grymma förklaringar!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback