Denne rapport vil beskæftige sig med hvordan computere bruger matematiske algoritmer til at sortere tal efter størrelse.
|
|
- Holger Davidsen
- 7 år siden
- Visninger:
Transkript
1 Sorteringsalgoritmer Af Tobias André Højsgaard Klasse 2.4 Roskilde Tekniske Gymnasium IT Opgavens mål Denne rapport vil beskæftige sig med hvordan computere bruger matematiske algoritmer til at sortere tal efter størrelse. Målene for opgaven er at fremstille og beskrive tre forskellige typer af sorteringsalgoritmer: Bubble-up sort, insertion sort og quick sort. Ordet beskrive indebærer også at sammenligne de forskellige funktioners kørselstider vha. antallet af træk de har brugt på at flytte alle tallene hen på deres retmæssige plads. De tre algoritmer skal køres på fire forskellige typer af lister: En helt tilfældig liste, en næsten sorteret liste, en omvendt sorteret liste og en liste med mange ens værdier, som alle skal genereres af programmet da de skal være tal store. Sorteringsalgoritmerne Beskrivelse Vi har som sagt 3 forskellige typer af sorteringsalgoritmer. De forsøger alle at organisere tallene fra mindst til størst. Bubble-up sort er en algoritme, der sammenligner talpar gennem listen og ser på hvilken af dem, der er størst. Hvis tallet, der står forrest er større end det, der kommer efter det, så bliver de to tal byttet om. Insertion sort tager et tal i begyndelsen af listen, sammenligner med resten af listen indtil den finder et tal, der er mindre end den selv og placerer dette tal rigtigt i forhold til det tal, der står i begyndelsen af listen. Når det tal, der er mindst i hele listen er placeret som nummer 1 vil listen tjekke i forhold til tal nr. 2 indtil det tal der står på denne plads er det næstmindste og så videre. Quick sort tager et tal og behandler det som et omdrejningspunkt. Den placerer derefter alle de tal, der er mindre end omdrejningstallet i en liste for sig og alle tal, der er større, for sig. Quick sort kører desuden sig selv igen på de to nye lister den har lavet sådan at de bliver splittet op igen og igen indtil der kun er én ting tilbage i dem. Implementering Sorteringsalgoritmerne kan findes under den samlede kildekode i bunden af rapporten. Bubble-up er nok den sorteringsalgoritme med det simpleste princip bag sig. Vi bruger listeindekser til at sammenligne de ting der står på en plads i listen og på pladsen lige efter ved hjælp af en 'for'-løkke. Side 1 af 11
2 Det algoritmen gør er at sige, at alle tal på en vilkårlig listeplads skal sammenlignes med tallet på listepladsen med ét nummer højere end dem. På den måde går vi hele listen igennem og sammenligner. Vi har desuden lavet en 'try' og 'except'-kode. Grunden til dette er at algoritmen ikke ville kunne finde ud af hvad den skulle gøre når den kom til slutningen af listen og den ikke længere kan lægge 1 til det listenummer, hvorpå det tal den skal bruge står. Kombinationen af 'except' og 'break' betyder at funktionen genstarter når den ikke kan udføre koden under 'try' Insertion sort kører også med en 'for'-løkke. Vi giver en variabel en værdi, der er den samme som det tal, der står på listepladsen vi undersøger. Samtidig giver vi en variabel 'i' en værdi der er 1 mindre end listepladsens indeksnummer, hvilket senere lader os placere tal bag ved det første tal i listen. Vi siger derefter at så længe listens indeksnummer er større end eller lige med 1 (fordi 'i' er lige med listens indeks minus 1) så hvis værdien vi kigger på er mindre end tallet bag den vil de to blive rykket om, lidt ligesom en omvendt bubble-up sort. Quick sort bruger rekursive funktioner. Vi starter med at lave tre variabler og sætter dem til at være en tom liste: En mindre, lige med og større liste, som kan opbevare de tal vi fordeler i funktionen. Da disse lister er lokale i funktionen vil det ikke betyde noget at der kun er tre. Hvis længden af den liste vi skal undersøge er større end 1, så vil vi 'appende' større tal til den større liste osv. ved at sammenligne 'x' i 'for' løkken med omdrejningstallet som i denne funktion hedder 'midt'. De rekursive funktioner kommer ind i billedet når vi returnerer de tre lister plusset sammen, men samtidig kører funktionen på den større og mindre liste for at sortere dem. Hvis listens længde kun er på ét tal, så returnerer vi bare listen, hvilket derefter får funktionen til at sætte alle de små lister sammen til én stor, som så er i rigtig rækkefølge. Listegeneratorer Implementering Python giver mulighed for at skrive eller læse til tekstfiler ved at bruge funktionen: open("filnavn.txt","mode") Med mode menes om der skal skrives eller læses fra teksten. Til skrivnings bruges "w" og til læsning "r". En fælles størrelsesvariabel gør det muligt at justere længden af teksterne mere effektivt, samt hvilken rækkevidde de skal have mht. talstørrelser inde i listen. En tilfældig liste laves ved at bruge random.randrange() funktionen som tager et tilfældigt tal inden for en bestemt rækkevidde. Her er rækkevidde 1 til værdien af størrelsesvariablen. Vi skriver dette tilfældige tal ind i tekstfilen og bruger en variabel 'tal' til at tælle ned, så vi sikrer os at vi får den rette mængde tal i listen uden at ændre på størrelsesvariablens værdi. Den næsten sorterede liste laves efter næsten samme princip. Vi sørger bare for at rækkevidden af de tilfældige tal er mere justeret i forhold til listen. Her er listen opdelt i 10 intervaller som alle har deres egen rækkevidde at tage fra, sådan at all 1000-taller står før 2000-tallerne. Side 2 af 11
3 Den omvendt sorterede liste laves ved at sætte værdien af den variabel vi skriver ind i filen lige med 'tal' som vi jo bruger til at tælle ned fra den værdi størrelsen af listen antager. I dette tilfælde 10000, men det kunne lige så godt være Lister med mange ens værdier laves på præcis samme måde som den tilfældige liste, bortset fra at rækkevidden er mindre, så der er færre muligheder at tage fra når der skal findes tilfældige værdier. Sammenligning af lister: Det lykkedes desværre kun at implementere kode, der lod mig måle på antallet af træk i bubble-up og quick sort algoritmerne. Af grunde der ikke indtil videre er opklarede vises antallet af træk for insertion sort altid som tal er en meget stor liste, så der er selvfølgelig en mængde af træk tilsvarende til denne størrelse. Sammenligningen for bubble-up sort er som følger: Vi ser at den omvendt sorterede liste er den største med over 45 millioner træk, hvilket stemmer overens med det faktum, at bubble-up sort skal køre igennem funktionen flere gange hvis der er et stort tal i begyndelsen af listen, fordi den hele tiden sammenligner med enkelte talpar og bytter rundt. Der er dog et problem med at udføre videre analyse af bubble-up sort med tal-lister. Den omvendt sorterede liste er for stor til at kunne blive beregnet af computeren eller også er der en fejl i programmet når det kommer til quick sort algoritmen, hvilket giver et upræcist sammenligningsgrundlag, eller retter, et ikke eksisterende sammenligningsgrundlag. Jeg har foretaget den samme sortering igen, men med lister med en længde af 1000 tal, hvilket kunne ændres simpelt på grund af implementeringen af en størrelsesvariabel i begyndelsen af listekoden. Side 3 af 11
4 Resultaterne er cirka de samme, men nedskaleret med en faktor 10. Vi ser her resultaterne for quick sort og insertion sort. Vi kan ikke rigtigt konkludere på insertion sort, da de lave resultater skyldes en fejl. For øvrigt er dette ikke noget, der er relateret til den måde jeg har stillet min sammenligningskode op. Jeg har udkommenteret de andre algoritmers kørsel fra den nederste del af programmet under test-fasen fordi det er klart, at når man kører to algoritmer på den samme tekstfil, så vi den ene vise 0 da den anden allerede har sorteret listen. Pointen er at insertion sort ikke har virket efter hensigten når det kommer til trækoptællingen. Morsomt nok er det også den omvendt sorterede liste, der er størst for quick sort. Dette har noget at gøre med, at jeg i stedet for at vælge et tal i midten af listen som mit omdrejningspunkt, har jeg i stedet valgt det Side 4 af 11
5 første tal. Dette betyder at denne funktion kører næsten ligesom bubble-up i den omvendt sorterede liste og derfor er langsom. Derudover er der kun én ting at sige, og det er at quick sort har et lavere antal træk for hver eneste liste. Da vi ikke kan konkludere på insertion sort algoritmen må den nuværende konklusion være at quick sort er den bedste sorteringsalgoritme. Samlet kildekode # -*- coding: cp1252 -*- #Vi importerer moduler til tilfældighed og tidsmåling import random import time #Listekode strrelse = #strrlse er listernes fælles størrelse lister = "us" #lister er usorterede #Vi bruger dette til at skifte mellem til og fra sorteret tilstand om lidt #De fire tekstfil åbnevariabler til skrivning skt = open("til.txt", "w") stn = open("nsl.txt", "w") skn = open("sor.txt", "w") skm = open("mev.txt", "w") #De fire åbnevariabler til læsning lst = open("til.txt", "r") ltn = open("nsl.txt", "r") lsn = open("sor.txt", "r") lsm = open("mev.txt", "r") Listegeneratorer #Tilfældig def til(): skt = open("til.txt", "w") tal = strrelse #Vi tæller ned fra den specificerede længde af listen på while tal > 0: ran = random.randrange(1,strrelse,1) skt.write(str(ran)+"\n") tal -= 1 Side 5 af 11
6 skt.close() #Næsten sorteret def nsl(): stn = open("nsl.txt", "w") tal = 0 reftal = strrelse while strrelse > tal: #Vi tildeler variablen skn værdier, #som stemmer overens med forskellige procentuelle værdier if tal >= reftal*0.9: ran = random.randrange(reftal*0.9,reftal,1) elif tal >= reftal*0.8 and tal < reftal*0.9: ran = random.randrange(reftal*0.8,reftal*0.9,1) elif tal >= reftal*0.7 and tal < reftal*0.8: ran = random.randrange(reftal*0.7,reftal*0.8,1) elif tal >= reftal*0.6 and tal < reftal*0.7: ran = random.randrange(reftal*0.6,reftal*0.7,1) elif tal >= reftal*0.5 and tal < reftal*0.6: ran = random.randrange(reftal*0.5,reftal*0.6,1) elif tal >= reftal*0.4 and tal < reftal*0.5: ran = random.randrange(reftal*0.4,reftal*0.5,1) elif tal >= reftal*0.3 and tal < reftal*0.4: ran = random.randrange(reftal*0.3,reftal*0.4,1) elif tal >= reftal*0.2 and tal < reftal*0.3: ran = random.randrange(reftal*0.2,reftal*0.3,1) elif tal >= reftal*0.1 and tal < reftal*0.2: Side 6 af 11
7 ran = random.randrange(reftal*0.1,reftal*0.2,1) else: ran = random.randrange(reftal*0,reftal*0.1,1) #Vi går hele vejen ned til 0 #NOTE: Denne kode er unødvendigt lang #Det er muligt at lave næsten sorterede lister nemmere #Denne kode var bare en kompliceret udgave af en generator #Omvendt rækkefølge def sor(): skn = open("sor.txt", "w") tal = strrelse while tal > 0: ran = tal skn.write(str(ran)+"\n") tal -= 1 #Da vi allerede tæller ned kan vi bare sætte listens værdi lige med tallet #Mange ens værdier def mev(): skm = open("mev.txt", "w") tal = strrelse while tal > 0: ran = random.randrange(1,strrelse*0.1,1) #Denne listes tilfældige rækkevidde er meget mindre og der er derfor mange ens værdier skm.write(str(ran)+"\n") tal -= 1 skm.close() Sorteringsalgoritmer #Bubble-up sort: def bubs(li): global t c = 1 while c > 0: for i in range(len(li)): Side 7 af 11
8 #Prøv at køre. Gentager når man kommer til enden af listen. try: if li[i] > li[i+1]: plc1 = li[i] plc2 = li[i+1] li[i] = plc2 li[i+1] = plc1 c += 1 t += 1 else: c -= 1 except: break #Break: Funktionen starter forfra hvis den ikke kan køre 'try' kode. return li #Insertion sort: def inss(li): c = 1 for x in range(1,len(li)): v = li[x] i = x - 1 while i >= 0: if v < li[i]: li[i+1] = li[i] li[i] = v i -= 1 t += 1 else: break return li #Quick sort def quis(li): global t #Vi globaliserer vores tællevariabel (t) så rekursive funktioner ikke genstarter den mindre = [] lige = [] strre = [] if len(li) > 1: Side 8 af 11
9 midt = li[0] for x in li: if x < midt: mindre.append(x) t += 1 elif x > midt: strre.append(x) t += 1 elif x == midt: lige.append(x) t += 1 return quis(mindre)+lige+quis(strre) else: return li return li Sortering #Generering af lister #Vi er nødt til at køre de fire funktioner for at generere listerne til() nsl() sor() mev() #Koden readlines bruges til at læse.txt filen én linje ad gangen #På den måde får vi hele tallene i stedet for cifrene og \n Sammenligning #Bubble-up sort sammenligning "Bubble-up sort sammenligning:" bubs(lst.readlines()) "Tilfældig liste:" "Antal træk:", t bubs(ltn.readlines()) "Næsten sorteret liste:" Side 9 af 11
10 "Antal træk:", t bubs(lsn.readlines()) "Omvendt sorteret liste:" "Antal træk:", t bubs(lsm.readlines()) "Liste med mange ens værdier:" "Antal træk:", t #Insertion sort sammenligning "Insertion sort sammenligning:" inss(lst.readlines()) "Tilfældig liste:" "Antal træk:", t inss(ltn.readlines()) "Næsten sorteret liste:" "Antal træk:", t inss(lsn.readlines()) "Omvendt sorteret liste:" "Antal træk:", t inss(lsm.readlines()) "Liste med mange ens værdier:" "Antal træk:", t #Quick sort sammenligning "Quick sort sammenligning:" quis(lst.readlines()) "Tilfældig liste:" Side 10 af 11
11 "Antal træk:", t quis(ltn.readlines()) "Næsten sorteret liste:" "Antal træk:", t quis(lsn.readlines()) "Omvendt sorteret liste:" "Antal træk:", t quis(lsm.readlines()) "Liste med mange ens værdier:" "Antal træk:", t Konklusion Vi har lavet fire lister af tal, men dette skabte i nogle tilfælde fejl for computeren, så i sammenligningen af algoritmerne blev denne værdi nedsat til 1000 tal. Vi kan konkludere på baggrund af resultaterne at quick sort har et lavere antal træk i hver eneste listetype. Dog ser den ud til at have et problem når listerne kommer op omkring de tal i længde, så efter dette punkt er bubble sort den mest medgørlige algoritme med omvendt sorterede lister, selvom træk-antallet og tiden for funktionens udførelse er meget stort/lang. Side 11 af 11
Lær Python - Dag 3, modul 1 Læse og skrive filer
Lær Python - Dag 3, modul 1 Læse og skrive filer Simon J. Larsen 15. oktober 2017 Institut for Matematik og Datalogi Læse og skrive filer Persistens Vi har ofte brug for at gemme data på disken som ikke
Læs mereIntroduktion til funktioner, moduler og scopes i Python
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for
Læs merePython programmering. Per Tøfting. MacFest
Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer
Læs mereForelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999
sammenligninger, hvor Programmering 1999 Forelæsning 17, tirsdag 2 november 1999 Søgning efter en given værdi i en tabel Lineær søgning og binær søgning Effektivitet: maskinuafhængig vurdering af køretid
Læs mereMajoritetsproblemet Problem Præcisering af inddata Præcisering af uddata
Majoritetsproblemet Problem: Til præsidentvalget i Frankrig har cirka 20 millioner vælgere afgivet deres stemme på et antal præsidentkandidater. Afgør om en af kandidaterne har opnået mere end halvdelen
Læs mereSortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Læs mereAlgoritmer og invarianter
Algoritmer og invarianter Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker. Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker.
Læs mereSøgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning
Søgning og Sortering Søgning og Sortering Philip Bille Søgning. Givet en sorteret tabel A og et tal x, afgør om der findes indgang i, så A[i] = x. Sorteret tabel. En tabel A[0..n-1] er sorteret hvis A[0]
Læs mereIt og informationssøgning Forelæsning oktober 2006 Nils Andersen
It og informationssøgning Forelæsning 6 11. oktober 2006 Nils Andersen Formatstyret udskrivning. Undtagelser. Løkkestyring med break og continue. Tekstfiler. Højereordensfunktioner. Formattekster og %-operatoren
Læs mereIde med Diff. Mål. Tidsplan. 1.uge: 2.uge:
Side 1 af 5 Ide med Diff. Min ide med differenertierings modulet er at lave et program som kan vise 3d objekter, og få lavede en konverter som kan konventer 3ds filer over til noget som flash kan bruge.
Læs mereSøgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille
Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering Philip Bille Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering
Læs mereSortering af information er en fundamental og central opgave.
Sortering 1 / 36 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,
Læs mereGrundlæggende køretidsanalyse af algoritmer
Grundlæggende køretidsanalyse af algoritmer Algoritmers effektivitet Størrelse af inddata Forskellige mål for køretid Store -notationen Klassiske effektivitetsklasser Martin Zachariasen DIKU 1 Algoritmers
Læs mereDokumentation af programmering i Python 2.75
Dokumentation af programmering i Python 2.75 Af: Alexander Bergendorff Jeg vil i dette dokument, dokumentere det arbejde jeg har lavet i løbet opstarts forløbet i Programmering C. Jeg vil forsøge, så vidt
Læs mereKlasse 1.4 Michael Jokil 03-05-2010
HTX I ROSKILDE Afsluttende opgave Kommunikation og IT Klasse 1.4 Michael Jokil 03-05-2010 Indholdsfortegnelse Indledning... 3 Formål... 3 Planlægning... 4 Kommunikationsplan... 4 Kanylemodellen... 4 Teknisk
Læs mereSortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Læs mereJeg har i forbindelse med it og programmering designet og udviklet et it-produkt, som kan beregne rødder i en anden gradsligning.
Indhold Beregn rødder... 2 Beskrivelse af kærneproblemet... 2 Plan for brugerfladen for programmet... 3 Operationer på inddata... 4 Output - Beskrivelse af uddata... 4 Flowchart - programmets logiske opbygning/struktur...
Læs mereSortering af information er en fundamental og central opgave.
Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,
Læs mereMircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)
Mircobit Kursus Lektion 3 http://microbit.org/ (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) I sidste lektion var der en opgave man selv skulle prøve at løse. Man skulle lave et tabel
Læs mereIntroduktion Til Konkurrenceprogrammering
Introduktion Til Konkurrenceprogrammering Søren Dahlgaard og Mathias Bæk Tejs Knudsen {soerend,knudsen}@di.ku.dk Version 0.1 Indhold Indhold i Introduktion 1 1 Palindromer 3 1.1 Introduktion til Python...............
Læs mereLær Python dag 1 - modul 1
Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen
Læs mereGrådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for
Læs mereSortering i lineær tid
Sortering i lineær tid Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel. Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel.
Læs mereNoter til C# Programmering Iteration
Noter til C# Programmering Iteration Programflow Programmer udfører det meste af deres arbejde vha. forgrening og løkker. Løkker Mange programmeringsproblemer kan løses ved at gentage en handling på de
Læs mereStruktureret læsning i Matematik
Struktureret læsning i Matematik Frank Villa 19. august 2012 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk.
Læs mereBRP Sortering og søgning. Hægtede lister
BRP 18.10.2006 Sortering og søgning. Hægtede lister 1. Opgaver 2. Selection sort (udvælgelsessortering) 3. Kompleksitetsanalyse 4. Merge sort (flettesortering) 5. Binær søgning 6. Hægtede lister 7. Øvelser:
Læs mereMm7: A little bit more about sorting - and more times for exercises - November 4, 2008
Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm: A little bit more about sorting - and more times for exercises - November 4, 2008 1 Algorithms and Architectures
Læs mereMartin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox
Martin Olsen DM0 Projekt 0 Del I. marts 0 FOTO: Colourbox Indhold Indledning... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Kildekode til SimpleInv.java... Kildekode til MergeSort.java...
Læs mereMircobit Kursus Lektion 2
Mircobit Kursus Lektion 2 I denne lektie skal vi arbejde videre med lille mini computer kaldt microbit. Du kan finde Simulatoren & Programmet til micobit her: http://microbit.org/ (Du skal her vælge Lets
Læs mereKom godt i gang med Fable-robotten
Kom godt i gang med Fable-robotten 1. Først skal du installere programmet på din computer. Gå ind på shaperobotics.com og under support vælger du download: Her vælger du, under PC App om du kører Windows
Læs mereIt og informationssøgning Forelæsning september 2006 Nils Andersen. Gentagelser og tekster
It og informationssøgning Forelæsning 3 20. september 2006 Nils Andersen Gentagelser og tekster Dokumentationstekster Iteration (gentagelse) - med while - med for En- og todimensionale tabeller Typen af
Læs mereDDD Runde 2, 2015 Facitliste
DDD Runde 2, 2015 Facitliste Søren Dahlgaard og Mathias Bæk Tejs Knudsen Opgaver og løsninger til 2. runde af DDD 2015. 1 4. 19. februar, 2015 linetest DK v1.0 Line Test Sigurd er begyndt i gymnasiet og
Læs mereFable Kom godt i gang
Fable Kom godt i gang Opdateret: 26-03-2018 Indholdsfortegnelse 1. Først skal du installere programmet på din computer 3 2. Når programmet er installeret er du klar til at pakke robotten ud 4 3. Nu er
Læs mereMichael Jokil 11-05-2012
HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...
Læs mereMålet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.
Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2010 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 24. april, 2010 (let justeret 10. maj og 21. maj 2010) Dette projekt udleveres i tre
Læs mereDM536. Rapport og debug
DM536 Rapport og debug Kilder Vigtig.it (Felix Palludan Hargreaves) http://vigtig.it/dm502/howto_report.pdf http://vigtig.it/blog/teaching/#toc-relevant-tips Peter Schneider-Kamp http://imada.sdu.dk/~petersk/dm536/project2.pdf
Læs mereSortering. De n tal i sorteret orden. Eksempel: Kommentarer:
Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus
Læs mereIndholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...
Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... 3 Kildekoden... 4 Variabler... 4 Setup... 4 Loop... 4 Indledning
Læs mereDynamisk programmering
Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur (struktur opbygget af et endeligt antal enkeltdele) blandt mange mulige. Eksempler:
Læs mereMålet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.
Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål
Læs mereIndholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...
Modul 2 Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen... 6 Opgave... 6 POST/GET og formular... 6 Opgaver...
Læs mereMircobit Kursus Lektion 1
Mircobit Kursus Lektion 1 I denne lektie skal vi se nærmere på den lille mini computer kaldt microbit. Egentlig kræver det at man har en fysisk microbit men man kan også næsten lave det samme med den simulator
Læs mereDynamisk programmering
Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde
Læs mereMark Jeays simple solution to the Rubik s cube oversat og redigeret af Jess Bonde. -
Mark Jeays simple solution to the Rubik s cube oversat og redigeret af Jess Bonde. jess@rubiks.dk - http://www.rubiks.dk Trin 0 Introduktion & notation Trin 1 De tre øverste sidestykker Trin 2 Hjørner
Læs mereSammenlign og byt. Et eksempel på dokumentering af et program
Sammenlign og byt Et eksempel på dokumentering af et program Sammenlign og byt Jeg har valgt, som et eksempel, at dokumentere et meget enkelt program som indlæser to tal, sammenligner dem og udskriver
Læs mereLæringsprogram. Numeriske metoder. Matematik A Programmering C Studieområdet. Roskilde Tekniske Gymnasium Klasse 3.4
Læringsprogram Numeriske metoder Matematik A Programmering C Studieområdet Roskilde Tekniske Gymnasium Klasse 3.4 Lau Lund Leadbetter Mikkel Karoli Johnsen Tobias Sønderskov Hansen Lineær regression ved
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereTurneringsplanlægning
Rasmus Vinther Rasmussen Afdelingen for Operations Analyse Aarhus Universitet Matematiklærerdag 006 Er der nogen, der har prøvet at planlægge en turnering? Er der nogen, som har hørt om en turnering, der
Læs mereØvelse 7: Aktuar-tabeller, Kaplan-Meier kurver og log-rank test
Øvelse 7: Aktuar-tabeller, Kaplan-Meier kurver og log-rank test Formålet med øvelsen er at analysere risikoen for død forbundet med forskelligt alkoholforbrug. I denne øvelse skal analyserne foretages
Læs mereVisualiseringsprogram
Visualiseringsprogram Programmering C - eksamensopgave Rami Kaddoura og Martin Schmidt Klasse: 3.4 Vejleder: Karl Bjarnason Roskilde Tekniske Gymnasium Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-12
Læs mereAlgoritmeskabeloner: Sweep- og søgealgoritmer C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte
Læs mereKlasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.
Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens
Læs mereBeat the Clock Sorteringsnetværk
Aktivitet 8 Beat the Clock Sorteringsnetværk Resumé Selvom computer er hurtige, er der en grænse for, hvor hurtigt de kan løse et problem. En måde at speed e det op på er at bruge flere computere til at
Læs mereFable Kom godt i gang
Fable Kom godt i gang Vers. 1.3.1 Opdateret: 29-08-2018 Indholdsfortegnelse 1. Installer programmet 3 2. Pak robotten ud 5 3. I gang med at programmere 6 4. Programmér Fable til at køre fra 90 til -90
Læs mereLøsning af møntproblemet
Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet
Side af 1 sider Skriftlig Eksamen Algoritmer og Datastrukturer 1 Datalogisk Institut Aarhus Universitet Dette eksamenssæt består af en kombination af små skriftlige opgaver og multiplechoice-opgaver. Opgaverne
Læs mereDu trækker 2 gange, hvis begge spillere bekender begge gange, så er der kun 1 trumf tilbage, og du vil ALTID vinde.
Februar 2018. Spil 1. Løsning på quiz. Løsning på quiz fra januar 2018. 1. Spar es, hjerter 2, 3, 4, 5 og 6, ruder konge, dame og knægt. Begge dine modspillere har bekendt 1. udspil. 2. Spar es, klør 2,
Læs mereGrådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for
Læs merePointen med Funktioner
Pointen med Funktioner Frank Nasser 0. april 0 c 0080. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette er en
Læs mereKapitel 4 Løkker i C#
Kapitel 4 Løkker i C# Løkker en vigtig del af alle programmeringssprog, og C# er ikke andeles. En løkke er en måde at udføre en del af koden gentagne gange. Ideen er at du fortsætter med at udføre en opgave
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereDM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode
- 3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode Jacob Aae Mikkelsen - 191076 12. december 2005 1 Indhold 1 Opgave beskrivelse 2 2 Muligheder for optimering 2 2.1 efter branch.........................
Læs merePython 3 kursus lektion 1:
Python 3 kursus lektion 1: Her laves et nyt program Her køre programmet! Her skrives koden: Gem (CTRL-s) Tryk F5 (for at køre) www.madsmatik.dk d.14-01-2016 1/5 At skrive til skærmen: Hello World Man kan
Læs mereEt generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Opbyg løsningen skridt for skridt ved hele tiden af vælge lige
Læs mereComputerspil. Hangman. Stefan Harding, Thomas Bork, Bertram Olsen, Nicklas Thyssen og Ulrik Larsen Roskilde Tekniske Gymnasium.
10-02-2015 Computerspil Hangman Stefan Harding, Thomas Bork, Bertram Olsen, Nicklas Thyssen og Ulrik Larsen Roskilde Tekniske Gymnasium. Kom/it c Indhold Intro... 2 Indledende aktivitet... 2 Kommunikations
Læs mereVi har valgt at analysere vores gruppe ud fra belbins 9 grupperoller, vi har følgende roller
Forside Indledning Vi har fået tildelt et skema over nogle observationer af gærceller, ideen ligger i at gærceller på bestemt tidspunkt vokser eksponentielt. Der skal nu laves en model over som bevise
Læs mereDansk Skaksalg Vejledning til ur - DGT 2010
Indhold Knapper på uret... 2 Oversigt over programmer... 3 Standard indstilling... 3 Korrigere tiden - give ekstra/mindre tid... 4 Manuel opsætning... 4 Generelt ved manuel opsætning:... 4 1: Armageddon
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereMircobit Kursus Lektion 4 (Du skal her vælge Lets Code Og herefter Block Editor.)
Mircobit Kursus Lektion 4 http://microbit.org/ (Du skal her vælge Lets Code Og herefter Block Editor.) I sidste lektion var der en opgave man selv skulle prøve at løse. I skulle lave et stop ur man kunne
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3
DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget
Læs mereDM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7
DM01 DM01 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 13/5-2003 Side 1 af 7 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DNA2:...4 2.1.1 METODER:...4
Læs mereDer hænger 4 lodder i et fælles hul på hver side af en vægtstang. Hvad kan du sige med hensyn til ligevægt?:
1 At skabe ligevægt Der er flere måder hvorpå man med lodder som hænger i et fælles hul på hver sin side af en vægtstang kan få den til at balancere - at være i ligevægt. Prøv dig frem og angiv hvilke
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer (DM507)
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)
Læs mereSortering ved fletning (merge-sort)
Sortering 1 Sortering ved fletning (merge-sort) 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 2 Del-og-hersk Del-og-hersk er et generelt paradigme til algoritmedesign Del: opdel input-data S i to disjunkte
Læs mereOpskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n
Side af 0 sider Opgave (%) Ja Nej n er O(0n logn)? n er O(n )? n +n er O(n )? n logn er O(n )? n logn er O(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n
Læs mereI denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal.
Denne guide er oprindeligt udgivet på Eksperten.dk Afrund til helt tal I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal. Skrevet den 03. Feb 2009 af tjomsen I kategorien
Læs mereOversættere Skriftlig eksamen onsdag d. 24. januar 2007
Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 24. januar 2007 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige
Læs mereSelvstudium 1, Diskret matematik
Selvstudium 1, Diskret matematik Matematik på første studieår for de tekniske og naturvidenskabelige uddannelser Aalborg Universitet I dette selfstudium interesserer vi os alene for tidskompleksitet. Kompleksitet
Læs mereKom igang med Scroll:bit
Kom igang med Scroll:bit 1. Forbind scroll:bit til din micro:bit Indsæt micro:bit i edge-connectoren på din scroll:bit. Displayet på micro:bit og scroll:bit skal vende samme vej. Se billede nedenfor. Det
Læs mereIntroduktion til denne manual
DdD Statusmanual Introduktion til denne manual Denne manual er delt i 4 mindre manualer, som du kan bruge samlet til en komplet statusmanual eller hver for sig. 1) En step by step guide a. Beskriver step-by-step
Læs mereGrådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for
Læs mereProgrammering C RTG - 3.3 09-02-2015
Indholdsfortegnelse Formål... 2 Opgave formulering... 2 Krav til dokumentation af programmer... 3 ASCII tabel... 4 Værktøjer... 5 Versioner af ASCII tabel... 6 v1.9... 6 Problemer og mangler... 6 v2.1...
Læs mereIntroduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal
Philip Bille Algoritmer og datastrukturer Algoritmisk problem. Præcist defineret relation mellem input og output. Algoritme. Metode til at løse et algoritmisk problem. Beskrevet i diskrete og entydige
Læs mereIT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4
IT opgave Informationsteknologi B Vejleder: Karl Navn: Devran Kücükyildiz Klasse: 2,4 Dato:03-03-2009 1 Indholdsfortegnelse 1. Indledning... 3 2. Planlægning... 3 Kommunikationsplanlægning... 3 Problemstillingen...
Læs mereIndledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.
Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19
Læs mereIntroduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille
Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Philip Bille Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Algoritmer
Læs mereJan B. Larsen HTX Næstved Computational Thinking Albena Nielsen N. Zahles Gymnasium 2018/2019
Forløb: Toksikologi Fag og emner Forløbet kan laves udelukkende i matematik og bioteknologi, men der er oplagt, at det implementeres i andre fag. Matematik modellering, differenceligninger, sandsynlighed,
Læs mereOnline billede filtrering
Online billede filtrering Eksamensprojekt 2014 Andreas Lorentzen, klasse 3.4 Roskilde Tekniske Gymnasium Programmering C 09-05-2014 I dette projekt vil jeg demonstrerer en af de mange ting moderne browsere
Læs mereSproget Rascal (v. 2)
Sproget Rascal (v. 2) Til brug i K1 på kurset Oversættere Opdateret 29/11 2004 Abstract Rascal er et simpelt Pascal-lignende imperativt sprog. Dette dokument beskriver uformelt Rascals syntaks og semantik
Læs mereProgrammering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen
Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan
Læs mereDM02 opgaver ugeseddel 2
DM0 opgaver ugeseddel af Fiona Nielsen 16. september 003 Øvelsesopgaver 9/9, 10/9 og 11/9 1. Vis, at 1 3 + 3 3 + 5 3 +... + (n 1) 3 = n 4 n. Omskriver til summationsformel: (i 1) 3 = n 4 n Bevis ved induktion
Læs mere2) Det er let at være produktiv med Python, da Python som regel kun har mellem 67 og 80% færre linier end tilsvarende C eller Java kode.
Denne guide er oprindeligt udgivet på Eksperten.dk I gang med Python I denne artikel vil jeg forsøge at give et kort og hurtigt indblik i programmeringssproget Python, der desværre er alt for overset.
Læs mereInvarianter. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen.
Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af)
Læs mere