Sist endret: 17.08.2010 Hovedside FAQ Beskjeder Timeplan Ukeplan Øvinger Gruppeøving Eksamensoppgaver Pensum Notater Kode/koding Ordliste Kontakt Eksterne ressurser IDI NTNU Utskriftsversjon Løsningsforslag - Parallellitet og repetisjon [Oppgave] [Levering] [Løsningsforslag] Innleveringsfrist: 02.12.2011 10:00 Du er logget inn og får derfor se om du har svart riktig/feil på de enkelte oppgavene. LF-svar er markert med grønt og feil svar er markert med rødt. Hvis dere er uenige i fasit, oppfordres dere til å diskutere dette på algdats nyhetsgruppe. Denne nyhetsgruppen har også et webgrensesnitt. Oppgave 1 Hva beskriver følgende: a) Tp: (3.4 %) Kjøretid med p prosessorer Totalt arbeid Kritisk sti(span) martme logget inn Poengoversikt b) T1: (3.4 %) Kjøretid med p prosessorer Totalt arbeid Kritisk sti(span) c) T : (3.4 %) Kjøretid med p prosessorer Totalt arbeid Kritisk sti(span) d) Hvilken av følgende beskrivelser av kritisk sti(span) er riktig? (6.8 %) Antall prosessorer som maksimalt kan arbeide samtidig Lengste sti der stegene ikke kan utføres parallelt 1 of 6 12/9/11 6:42 PM
En sti som oppstår mange ganger, og dermed kan kjøres av kun en prosessor en gang e) Hva kan man se ut av T1 <= Tp * P? (6.8 %) Parallelliteten til algoritmen er optimal. Den kritiske stien(span) er begrenset av antall prosessorer. Arbeidsmengden ved bruk a P prosessorer er ikke mindre enn ved bruk av 1. Oppgave 2 I denne oppgaven skal du analysere kjøretiden til små funksjoner. Funksjonen gjornoe() har kjoretid Θ(1). a) def funksjon1(n): for i in range(0, n): for j in range(0, n): for k in range(0,n/2): gjornoe() (5.1 %) T(n)=Θ(1) T(n)=Θ(n) T(n)=Θ(log(n)) T(n)=Θ(nlog(n)) T(n)=Θ(n 2.5 ) T(n)=Θ(n 3 ) T(n)=Θ(2 n ) T(n)=Θ(n!) b) def funksjon2(n): gjornoe() if n >= 1: funksjon2(n//4) (5.1 %) T(n)=Θ(1) T(n)=Θ(n) T(n)=Θ(log(n)) T(n)=Θ(nlog(n)) T(n)=Θ(n 2 ) T(n)=Θ(n 3 ) T(n)=Θ(2 n ) T(n)=Θ(n!) 2 of 6 12/9/11 6:42 PM
c) def funksjon3(n): gjornoe() if n > 0: funksjon3(n-1) funksjon3(n-1) funksjon3(n-1) (5.1 %) T(n)=Θ(1) T(n)=Θ(n) T(n)=Θ(log(n)) T(n)=Θ(n 3 log(n)) T(n)=Θ(2 n ) T(n)=Θ(3 n ) T(n)=Θ(4 n ) T(n)=Θ(n!) Oppgave 3 Ovenfor er det vist de første stegene av en partition, som er sentralt i quicksort. a) Hvordan ser arrayet ut etter neste iterasjon? (3.4 %) Nederste er korrekt b) Hvordan ser arrayet ut at partition er ferdig? (3.4 %) 3 of 6 12/9/11 6:42 PM
Nest nederste er korrekt c) Har Insertion Sort (n elementer) tidskompleksitet Ω(n)? (3.4 %) Ja Nei Støttes av en generell sats: Alle sorteringsalgoritmer basert påsammenligninger er Ω(n*log n). d) Er Quicksort Ω((n*log n)? (3.4 %) Ja Nei Støttes av en generell sats: Alle sorteringsalgoritmer basert påsammenligninger er Ω(n*log n). e) Kan Insertion Sort brukes i forbindelse med Quicksort? (5.1 %) Ja Nei Alt bør sorteres ved innsetting når de sorterte intervallene erblitt korte ( 10±). Enhver sorteringsalgoritme som flytter elementer kun 1 posisjon (til en naboposisjon) av gangen må ha tidskompleksitet minst lik Ω (n 2 ) for sin worst case. f) Er utsagnet over rett eller galt? (6.8 %) Rett Galt I verste tilfelle er listen stortert i motsatt rekkefølge. Da må element 1 flyttes n plasser, element 2 må flyttes n - 2 (fra posisjon 2 til posisjon n-1) osv. Kjøretiden blir da summen av en artimetisk rekke som er lik Ω(n 2 ) Oppgave 4 Hva slags problemer (eller variasjoner) blir presentert her? a) Det er klassefest, med n gutter og m jenter. En gitt gutt eller jente liker en delmengde av alle som er på festen. Du skal organisere bordkartet og vil gjerne matche flest mulig av personer med en de liker av motsatt kjønn. (5.1 %) 4 of 6 12/9/11 6:42 PM
b) Du har fått i oppdrag å bygge kjerrevei mellom flere landsbyer. Det er lite gjørme tilgjengelig, så veien må være kortest mulig, samtidig som det må være mulig å komme seg mellom alle landsbyene. (5.1 %) c) Du skal gå i Trondheim sentrum fra et sted til et annet. Desverre har du det problemet at du ikke kan gå forbi en kiosk uten å gå inn og kjøpe deg en brus. Brusprisen på alle kioskene er oppgitt. Hvilken vei skal du gå for å bruke minst mulig penger? (5.1 %) d) Alle barna til Indiana Jones skal over et nettverk av skrøpelige hengebruer. Hver av hengebroene tåler bare å bli gått over et gitt antall ganger (en person av gangen). Dette tallet er oppgitt for hver bro. Du vet ikke hvor mange barn Indiana Jones har (for han har vært over alt i verden), men du vet at han ikke ville sendt dem ut med mindre de alle hadde mulighet til å komme seg over i sikkerhet. Du vet også at Indiana har ordnet det slik at Nazi-Fritz, som vil fange barna, ikke skal klare å følge etter dem(han vil ikke klare å komme i mål). Hvor mange barn har Indiana Jones? (5.1 %) e) Anta at vi har et N*N brett der hver rute kan være enten hvit eller sort. Vi sier at to felt er naboer dersom de ligger ved siden av hverandre(og ikke på skrå). En sort sky består av ett eller flere sorte felter. Hvis et sort felt er med i en sky er også alle sorte naboer til feltet med i denne skyen. Vi vil finne antall skyer på brettet. (6.8 %) 5 of 6 12/9/11 6:42 PM
f) Nedover langs en stri elv ligger n utleiesteder for kano på rekke og rad. En kano kan leies på etthvert slikt sted og returneres på hvilket som helst annet utleiested lengre ned i elva. Det er ikke mulig å padle motstrøms. For hvilket mulig avgangssted i og ankomssted j er det gitt en leiepris P(i,j). Man skal lage en pristabell for å komme seg fra et hvilket som helst sted til et hvilket som helst sted. (6.8 %) Oppgave 5 Denne oppgaven er vanskelig og beregnet kun på de som vil ha en ekstra utfordring. For å gjøre øvingsarbeidet lettere for studentene har fagstaben i TDT4120 bestemt å dele studentene opp i arbeidsgrupper. Det er n >= 2 studenter, s(1) s(2)... s(n) som tar faget(anta at de er arrangert alfabetisk for enkelhetens skyld), fagstaben ønsker å dele opp studentene i k arbeidsgrupper, der 1 <= k <= n/2. Hver arbeidsgruppe skal inneholde minst 2 studenter. For å gjøre oppdelingen enkel vil fagstaben lage en alfabetisk sortert liste over studentene og deretter kutte listen i k-1 deler for å danne k arbeidsgrupper. Studentene vil som vanlig være litt vanskelige, og krever at arbeidsgruppene tar hensyn til hvem som kjenner hvem i klassen. De gir derfor fagstaben en liste med m vennepar. Vi betegner disse parene inn i listen med studenter(a 1,b 1 ),(a 2,b 2 ),(a m,b m ), slik at for 1 <= i <= m, student s(a i ) er en venn av student s(b i ). Et vennepar er respektert dersom begge vennene er i samme gruppe. Desverre så er fagstaben så opptatt av å finne på vanskelige oppgaver til studentene slik at de ikke har tid til å finne den optimale måten å dele opp studentene. Hjelp dem ved å finne en algoritme som finner M(n,k) - den partisjonen som deler n studenter opp i k grupper og maksimerer antall venner i hver gruppe. Gitt at T(i,j) betegner antall vennskap mellom studenter i rekken i...j. a) Hvordan skal den rekursive definisjonen til M se ut? (1.7 %) M(i,j) = max 2(j-1)<= L <=(i-2) {M(L,j)+T(L+1,j) M(i,j) = max 2(j-1)<= L <=(i-2) {M(L,j-1)+T(L+1,j) M(i,j) = max 2(j-1)<= L <=(i-2) {M(L,j-1)+T(L+1,j-1) M(i,j) = max 2(j-1)<= L <=(i-2) {M(L,j)+T(L+1,j-1) 6 of 6 12/9/11 6:42 PM