Komplexitet och ordo-notation (Big O) är verktygen vi använder för att prata om hur en algoritm presterar när mängden data växer. Istället för att mäta sekunder, vilket beror på hårdvaran, mäter vi antalet operationer. Detta ger eleverna ett språk för att diskutera skalbarhet, vilket är kritiskt i en värld där datamängderna ständigt ökar.
Skolverket KursplanerDAODAT0 - 2. Analys av algoritmerDAODAT0 - 4. Problemlösning
Eleverna kör två olika algoritmer för att lösa samma problem med indata av storlek 10, 100, 1000 och 10000. De prickar in resultaten i en graf för att visuellt se skillnaden mellan linjär och kvadratisk tillväxt.
Läraren sätter upp olika kodsnuttar på väggarna. Eleverna går runt i par och försöker lista ut ordo-notationen för varje exempel och skriver sina gissningar och motiveringar på post-it-lappar.
Eleverna får diskutera scenarier som att söka efter en person på Instagram vs att söka i en klasslista. De diskuterar varför en algoritm som fungerar för klassen skulle kunna 'krascha' internet om den användes globalt.
Hur skiljer sig tidskomplexitet från rumskomplexitet?
Att Big O visar exakt hur många sekunder ett program tar.
Förklara att Big O beskriver tillväxttakten, inte den exakta tiden. Genom att köra samma kod på en gammal och en ny dator ser eleverna att ordo-notationen är densamma trots olika tider.
Att O(n^2) alltid är sämre än O(n).
Visa att för mycket små indata kan den kvadratiska algoritmen vara snabbare på grund av mindre förberedelser. Diskussioner kring 'konstanter' hjälper eleverna att se nyanserna.