Hur lång tid tar det att köra "java Bits 200000", jämfört med "java Bits 100000"?
Blir programmet effektivt om vi lägger till 10 element istället för att göra arrayen dubbelt så stor?
Vilka påståenden är korrekta?
Vilka analyser är korrekta?
Vi hann inte med sista frågan, den kommer på nästa föreläsning.
Kan man ge add
och remove
amorterade tidskomplexiteten O(1) om man halverar arrayen när den blir…
…halvfull? Nej.
…kvartsfull? Ja.
Vilken rad i addFirst
är felaktig?
first.next.prev = node;
.Är implementationen av append
korrekt?
Nej. Korrekt variant:
void append(List<A> ys) {
if (ys.last != ys.first) {
last.next = ys.first.next;
last = ys.last;
ys.first.next = null;
ys.last = ys.first;
}
}
Sista frågan kommer på nästa föreläsning.
Hur många consceller innehåller tails [1, 2, 3]
(när uttrycket är fullt evaluerat)?
Vilka datastrukturer ger O(1) enqueue
och dequeue
(ev amorterat) för FIFO-köer?
Vad är tidskomplexiteten?
Vad blir resultatet av att applicera s
på följande träds rot?
Om man implementerar prioritetskö-ADTn med listor, vad blir tidskomplexiteten (ev amorterad) för insert
och delete-min
?
insert
: Θ(1), delete-min
: Θ(n).insert
: Θ(n), delete-min
: Θ(1).Notera att den här frågan inte är helt korrekt formulerad, se föreläsning 4.
Identifiera alla binära heapar.
Vad blir resultatet om delete-min
appliceras på den givna binära heapen?
Konstruera en sorteringsalgoritm baserad på binära heapar. Vad är dess tidskomplexitet, givet att jämförelser tar konstant tid?
Identifiera leftistheaparna.
Vad är resultatet av att applicera deleteMin
på den givna leftistheapen?
Hur många kollisioner inträffar?
Vad är tidskomplexiteten för borttagande av n strängar, var och en med n tecken, från en hashtabell som innehåller alla strängarna? Anta att hashfunktionen är perfekt, och linjär i strängarnas storlek.
Vad är bästa- och värstafallstidskomplexiteten för insertionSort
, givet att jämförelser tar konstant tid?
Är mergeSort
stabil?
Förtydligande: Frågan gäller den variant av mergeSort
som presenterades på föreläsningen.
Gäller |E| = Θ(|V|2) för följande klass av grafer?
Hur stor plats tar en array med grannlistor? (Anta att etiketter/vikter tar liten plats.)
Analysera värstafallstidskomplexiteten.
Vad händer om man använder en stack istället för en kö?
Fungerar algoritmen för viktade grafer (om + 1
byts ut mot + vikten av kanten från v till v'
? Testa!
Ger Dijkstras algoritm rätt svar för följande grafer?
Vad är den totala vikten av följande två grafers minsta uppspännande träd?
Hur många bakåtkanter innehåller DFS-skogen för följande graf, givet att vi, då vi kan välja mellan flera noder, alltid väljer den lägst numrerade noden?
Vilka sekvenser är korrekta topologiska sorteringar av följande graf?
Hur många starkt sammanhängande komponenter innehåller följande graf?
Ger följande funktion en lista av starkt sammanhängande komponenter som svar?
Vilka träd är binära sökträd?
Vad är värstafallstidskomplexiteten för inorder t
(om t
innehåller n element)?
Vilka träd är AVL-träd?
Vad blir resultatet av att sätta in 5 i följande AVL-träd?
Vad är värstafallstidskomplexiteten för att testa medlemskap av en sträng i en mängd som innehåller n strängar? Varje sträng har längd ℓ, prefixträdet använder arrayer, och hashfunktionen har tidskomplexiteten Θ(ℓ).
(Förtydligande: Alfabetet kan antas innehålla Ω(n) tecken.)
I en skipplista med n noder, vad är det förväntade antalet noder med höjd ≥h (exklusive vaktposten)?
Ge en skarp undre gräns för antalet löv i ett beslutsträd.
Vad är tidskomplexiteten för hinksortering? Anta att bucket
tar konstant tid.
Är heapsort stabil?
Vad är värstafallstidskomplexiteten för quicksort om p
alltid är arraysegmentets första element? Anta att partitionering tar linjär tid.
Vilka påståenden är sanna?
Vad är tidskomplexiteten för följande program, där i++
körs n gånger? Använd det logaritmiska kostnadskriteriet. (Se int
som en dynamisk array med bitar.)
Notera: Svaret ovan gäller om vi ser int
som en dynamisk bitarray, eller som en statisk bitarray med max(1, ⌈log2 (n + 1)⌉) element, och i++
implementeras på ett effektivt sätt. I den kanske vanligaste varianten av den logaritmiska kostnadsmodellen har dock i++
tidskomplexiteten "antalet bitar i den binära representationen av i
", och då blir svaret Θ(n log n).
Klassificera träden: Binär minheap, leftistminheap, AVL-träd.