DA3009 Programmeringsteknik för Datorlingvistik

Algoritmlabb

Innehåll:
Komplexitet, sökning, sortering.

Denna labb redovisas på gruppmötet på måndag. Ta med dina program och resultat samt dina svar på instuderingsfrågorna. Vid redovisningen ska du kunna förklara både program och svar för dina kurskamrater och din assistent.

Uppgift 1:

Skriv ett program med två nästlade for-slingor, som går igenom alla alfabetets bokstäver och skapar en lista med tvåbokstavsorden:
aa, ab, ac, ... , öö

Använd time-modulen för att mäta körtiden. Låt även programmet skriva ut antal ord.

Bygg nu ut programmet så att det skapar ord med tre bokstäver, och skriv ner dina resultat. Fortsätt att bygga ut på samma sätt tills programkörningen verkar ta orimligt lång tid.

Uppgift 2:

Skriv funktioner för linjärsökning och binärsökning (kodexempel finns i föreläsningen). Testa att funktionerna fungerar!

Lägg in funktionerna i programmet från uppgift 1. Jämför linjärsökning och binärsökning på två sätt:

Prova programmet med listor av olika längd.

Uppgift 3:

Blanda om dina ord med random.shuffle(listan).

Skriv funktioner för två olika sorteringsalgoritmer (kodexempel finns i föreläsningen) och testa att dom fungerar.

Jämför funktionerna på samma sätt som i förra uppgiften (tidsåtgång och antal jämförelser).
Låt programmet skriva ut en tabell över tidsåtgång/jämförelser för listor av olika längd.
Tips: Dubblera listan med listan = listan*2
Ta också tid på Pythons inbyggda listsorteringsmetod: lista.sort()!
 

Instuderingsfrågor