15 Arrays og Lister samt Stakke og Køer.
|
|
- Anton Villadsen
- 7 år siden
- Visninger:
Transkript
1 15 Arrays og Lister samt Stakke og Køer. Introduktion til arrays. Algebraisk specifikation af arrays. Arrays i Eiffel. Introduktion til lister og kædede lister. Fælles egenskaber ved stakke og køer. Algebraisk specifikation af stakke. Algebraisk specifikation af køer. Prioritetskøer. Simpel algebraisk specifikation af lister. Dobbeltkædede og cirkulære lister. Dette er den første af tre forelæsninger om elementære men centrale abstrakte datatyper. Foruden arrays, lister, stakke og køer (som er emnet i dette kapitel) vil vi i dette kursus, og senere i disse noter, se nærmere på strenge, filer, træer og hobe. 211
2 Introduktion til arrays. min i max Et array er en abstrakt datatype som repræsenterer en homogen tabel. Faste øvre og nedre grænser, og dermed fast størrelse. Vigtige array-operationer: hent i-te element. gem nyt objekt i i-te element. Hent og gem operationerne har konstant tidskompleksitet. Underliggende lagres elementerne i et array konsekutivt. Denne slide opremser traditionelle egenskaber af arrays. Et array kan implementeres som en konsekutiv mængde af lagerceller, hvor positionen af et element i array'et kan beregnes ud fra indekset. Det befordrer den konstante tidskompleksitet af de to fundamentale operationer: hent og gem på arrays. Med andre ord: hent og gem operationerne beregner positionen af et element i arrayet, og henter/gemmer dette element direkte, uden nogen som helst form for søgning eller gennemløb af arrayet. På dette kursus vil vi konsekvent opfatte arrays som objekter af en abstrakt datatype. På denne slide ser vi dels på den traditionelle repræsentation af denne datatype, dels på vigtige egenskaber af typens operationer. Homogenitetsegenskaben af arrays er relativ til programmeringssprogets regler for typesammenlignelighed. Homogenitetsegenskaben kan også ses som en kontrast til records, hvori felterne jo kan være af forskellige typer. Kravet om fast størrelse af arrays kan forstås på to måder: 1. Det er statisk bestemmeligt, hvor stort et array skal være. Dvs. at inden programmet kører kan man bestemme, hvor grænserne for programmets arrays. 2. Det er dynamisk bestemmeligt, hvor stort et array skal være. Størrelsen kan f.eks. afhænge af bruger-input. Men når et array først er allokeret, kan det ikke ændre størrelse. Det er selvfølgelig fristende at hæve disse restriktioner, og i visse sprog er det da også muligt at have arrays, som kan ændre størrelse under programmets udførelse. I Eiffel klassen ARRAY kan man anvende en operation resize, som ændrer størrelsen af arrayet. 212
3 Algebraisk specifikation af arrays. Type Array[X] Functions create: Integer x Integer -> Array[X] put: X x Integer x Array[X] -> Array[X] item : Integer x Array [X] -> X count: Array [X] -> Integer lower: Array [X] -> Integer upper: Array[X] -> Integer Axioms for all x in X, l, u, i, j in Integer, A in Array [X] item(i, create(l,u)) =undefined item (i, put (x, j, A)) = if i = j then x else item (i, A) count(create(l,u)) = if u l then u - l + 1else undefined count(put (x, j, A)) = count(a) lower(create(l,u)) = l lower(put (x, j, A)) = lower(a) upper(create(l,u)) = u upper(put (x, j, A)) = upper(a) Det er ikke helt oplagt, hvordan man håndterer indekstypen i en algebraisk specifikation af et array. Man kan vælge at angive to generiske typer til array specifikationen: indekstype og elementtype. Vi har dog i denne specifikation valgt at lade grænserne for arrayet være parameter til "basis konstruktoren" create. Da der jo ikke er ligninger for konstruktorerne, kan vi ikke direkte angive, at den nedre grænse skal være mindre end den øvre grænse. Dette må afspejles i specifikationen af andre operationer, eller, om muligt, i en prebetingelse til Create. Vi har ikke indbygget sådanne fejlchecks konsekvent i ovenstående specifikation. Vi er interesseret i at angive de vigtige egenskaber ved arrays, axiomerne. De sekundære, og mere pragmatisk betonede egenskaber har vi stort set udeladt, da de blot forvirrer billedet. En af de vigtige ting at fæstne sig ved i denne specifikation, er hvilken værdi item(i, A) returnerer, hvis vi har tilskrevet elment nummer i værdien a1, og dernæst tilskrevet det samme element værdien a2. Specifikationen af item operationen angiver, at den sidst tilskrevne værdi til det i-te element (a2) overskriver den første. Overvej dette! Bemærk, at denne specifikation specificerer et array, men operationelt er den "forfærdelig" fra et kompleksitetsmæssigt synspunkt. Item operationen, som tager et element ud af array-et er foreskrevet som et rekursivt gennemløb af strukturen. Dette skal på ingen måde tages som et forbillede for en implementation, i hvilken vi jo kræver, at arrayopslag skal have konstant tidskompleksitet. 213
4 Arrays i Eiffel. I Eiffel er array typen defineret af en generisk klasse. Eiffel class ARRAY[T] export lower, count, upper, item, put,... make(minindex, maxindex: INTEGER) is do... end item(i: INTEGER): T is do... end... end... end; --class ARRAY a: ARRAY[BOOLEAN];...!!a.make(1, n); a.put(i, false); x := a.item(i) Pascal (* intet modstykke *) (* sprogdefineret *) a: array[1..n] of boolean; a[i] := false; x := a[i]; I forhold til bogen OOSC er der i vores implementation af Eiffel indført andre navne på operationerne på arrays. Denne slide bruger de nye og gældende navne. Lad være med at programmere med ARRAYs efter OOSC. Eiffel the Language kapitel 28 beskriver Array s i Eiffel3. Der er flere operationer i klassen ARRAY end dem, vi har specificeret på forrige slide. Se kap. 28. Det skal bemærkes at der findes et infix alias for operationen item. I stedet for at skrive a.item(i) som ovenfor kan man i Eiffel3 skrive i Det er generelt muligt at definere infix (og prefix) notation for operationer med to parametre (én parameter), incl. modtager objektet. Se detaljer i i Eiffel the Language. Vær også opmærksom på klassen ARRAY2---to-dimensionelle arrays, som er i datastrukturbiblioteke. 214
5 Manifeste arrays i Eiffel. I Eiffel er der en manifest notation for arrays, hvis nedre grænse er 1. << e 1, e 2,... e n >> er et udtryk, hvis værdi er af typen ARRAY[T], forudsat at alle deludtryk e 1, e 2,... e n er af typer, som er typesammenlignelige med T. << e 1, e 2,... e n >> både instantierer og initialiserer et array objekt. Skabelse af et array ved brug af manifest array-udtryk. A: ARRAY[INTEGER]... A := << 8, 9, 10 >> Tilsvarende skabelse af et array uden brug af manifest array-udtryk. A: ARRAY[INTEGER]... A.make(1, 3); A.put (8, 1); A.put(9, 2); A.put(10, 3) Man kan i Eiffel the Language læse om manifeste arrays i afsnit
6 Introduktion til lister. (e 1 e 2 e 3... e n ) En liste er en abstrakt datatype som tillader os at registrere en bestemt rækkefølge af et antal homogene elementer. Vigtige liste-operationer: Indsættelse af nyt element i listen. Sletning af eksisterende element fra listen. Navigering til et naboelement i listen. Aflæsning af et nærmere angivet element i listen. Der er mange mulige repræsentationer af lister: baseret på arrays. baseret på sammenkædede strukturer. andre... Repræsentationen påvirker operationsrepertoire. tidskompleksitet. andre basale egenskaber (f.eks. persistens). På sammen måde som vi opfatter et array som en abstrakt datatype, vil vi også opfatte lister som en abstrakt datatype. Lister er på flere måder et mere abstrakt begreb end arrays. Det basale i listebegrebet er rækkefølgen mellem et antal elementer. Dette træk genfinder vi også fra array-typen, idet der jo er en ganske bestemt rækkefølge af tabellens pladser. Vi har forsøgt at fastslå de vigtige og karakteristiske operationer på lister. Indsættelse og sletning tillader os manipulere rækkefølgen af elementer. Hvis vi sammenligner med array-typen kan vi notere os, at der er fundamentale forskelle, idet rækkefølgen af array-elementer i bund og grund er fastlagt på det tidspunkt, array et skabes. (At vi kan simulere ændringer af rækkefølgen af array-elementer ved at skubbe og ombytte indholdet er tabellens elementer er en lidt anden sag, som vi ser bort fra her). Navigering til naboelementer er også fundamentalt for lister. På dette niveau af diskussionen vil vi ikke fastlægge nøjagtigt hvilken navigering der er tale om, og ej heller hvordan resultatet af navigeringen manifesterer sig. Men i næsten alle lister vil vi kunne navigere til næste elemente i listen. (I mange liste typer kan vi også komme afsted med at navigere til forrige element i listen, til første element, til sidste element og til i-te element). Endelig må vi naturligvis have en eller anden måde at aflæse elementer fra listen. Aflæsning hænger naturligvis ofte sammen med navigering, således at vi kan aflæse det element, hvortil vi har bevæget os. Lister kan repræsenteres på mange forskellige måder; hver repræsentation giver operationerne bestemte egenskaber hvad angår tidskompleksitet. Der findes to meget anvendte måder at repræsentere lister på: (1) som sammenkædede strukturer og (2) ved arrays. Dette vender vi tilbage til på næste side. 216
7 Kædede lister. Enkeltkædet liste dataelement hægte Sammenkædet (hægtet) struktur af homogene dataelementer. Ingen grænser på strukturen. Indsættelse og sletning af elementer: operationer med køretid på O(n), hvor n er længden af listen. Navigering kan kun foregå ved at følge hægterne mellem listeelementer. En liste er mere end samlingen og rækkefølgen af elementer. Det er farligt at referere til en liste gennem en pointer til dets første element. En liste er et objekt, som har selvstændig identitet. På denne slide studerer vi lister repræsenteret som (enkelt) kædede strukturer, og vi sammenligner med en array-baseret løsning. Den udefra kommende reference til listen øverst til venstre på denne slide peger på det første element i listen. (Se dog diskussionen af denne reference herunder). I et array er det ikke muligt direkte at indsætte et element mellem to eksisterende elementer. Vi kan, f.eks., ikke indsætte et element mellem a[2] og a[3] i array-et a ved at sige a[2.5] := e. Det nærmeste, vi kan komme dette, er at skubbe alle elementerne mod højre, i eksemplet alle elementer fra a[3] og fremad, således der bliver plads til det nye element. Derved ændres elementernes indeks. Denne operation er endvidere kostbar, i størrelsesordenen O(længden af array-et). Kædede lister er velegnede hvad angår indsættelse og sletning af elementer imellem (eller før eller efter) eksisterende elementer. Indsættelse består i at skabe en ny kasse og hægte den ind i strukturen. Sletning består i at afskaffe en eksiterende kasse, og afhægte den fra strukturen. Det er naturligvis vigtigt at man behersker de enkelte trin i disse to handlinger. Det er vigtigt at få fat i, hvor tidsforbruget for indsættelse og sletning af elementer i en kædet lister stammer fra. Hvis vi ønsker at slette det i-te element i en kædet liste må vi opsøge dette element. Hvis "opsøgningen" skal foretages ved at gennemrejse alle de forudgående elementer, koster det i gennemsnit n/2 trin. Selve indsættelses- og slette operationerne af et led i kæden er af konstant kompleksitet, forudsat at man også har en reference til det forrige liste element. I praktiske implementationer er det således attraktivt at introducere en listeposition, som kan flyttes af bestemte operatione. Eiffel gør et stort nummer ud af dette. Hvis man refererer til en liste gennem en pointer til dets første element kommer man i alvorlige vanskeligheder hvis man vil indsætte eller slette det første element i listen. Derimod er det ikke et problem at indsætte/slette de øvrige elementer. Det er klart, at dette er noget rod! En løsning (lappeløsning) er at introducere et listehovede eller et dummy element (se Weiss afsnit 3.2.3). Den pæne løsning består i at indse, at en liste som så er et objekt med identitet (udgjort af mere end blot dets elementer) og med egen tilstand. En del af tilstanden er naturligvis referencen til listens første element. 217
8 Algebraisk specifikation af lister. Type List[X] Functions empty-list: -> List[X] insert: X x List[X] -> List[X] delete: List[X] -> List[X] item : Integer x List [X] -> X count: List [X] -> Integer append: List [X] x List [X] -> List [X] Axioms for all x in X, L, in List[X], i in Integer item(i, empty-list ()) = error item (i, insert (x, L)) = if i = 1 then x else item (i-1, L) delete(empty-list ()) = error delete(insert (x, L)) = L count(empty-list ()) = 0 count(insert(x, L)) = 1 + count(l) Vi indskrænker os til at specificere lister i det specialtilfælde, hvor elementer altid indsættes og slettes i begyndelsen af listen. Bemærk, at vi i realiteten derved kommer til at specificere noget, der ligner en stak. Vi kan dog gennem operationen item bede om det i-te element i listen. Dette er mere realistisk, end det måske lyder. Lisp, som er et listehåndteringssprog, arbejder med lister på denne måde. Empty-list svarer da til nil i Lisp, insert til cons, delete til cdr, item til nth (med lidt anden nummereringskonvention af elementer i listen). Vi har ikke i denne specifikation et eksplicit modstykke til car fra Lisp. Den kan fåes ved item(1,...). I Lisp er det dog meget forkert at tænke på cdr som delete. (Cdr l) returnerer halen af listen l, men l er stadigvæk en reference til hele listen l. Når vi har brug for en manifest notation for lister vil vi bruge Lisp notation. Ifølge denne er (e1 e2... en) listen bestående af elementerne e1, e2,..., en. Opgave 1. I specifikationen på denne slide er der ikke vist ligninger for append. Append skal sammensætte to lister, således at elementerne fra den første liste kommer forud for elementerne i den anden liste. Skriv ligningerne for append. Opgave 2. Lav en algebraisk specifikation af lister, hvor elementer kan indsættes og slettes fra vilkårlige positioner. Create laver en tom liste, insert indsætter et element, således at det bliver det i-te element i listen, delete sletter det i-te element, og item udtager det i-te element. Count betegner antallet af elementer i listen. 218
9 Dobbeltkædede lister og cirkulære lister. Dobbeltkædet liste left right data Effektivt at navigere både mod højre og venstre. Cirkulær liste data right Effektivt at indsætte først såvel som sidst i listen. I en cirkulær liste peger vores udefra kommende reference på det sidste element. Idet listens sidste element peger på det første element, er det effektivt at indsætte elementer både først og sidst i listen. I Eiffel er den mest benyttede kædede liste LINKED_LIST, som er enkeltkædet. Som et alternativ har vi på dette kursus adgang til en lidt simplere klasse (og knap så rig klasse for enkeltkædede lister) kaldet SIMPLE_LIST. Denne klasse introduceres i et appendex til nærværende del af noterne. 219
10 Gennemløb af lister. Forskellige former for gennemløb af lister: udførelse af en handling på alle elementer i en liste. filtrering af alle elementerne i en liste, som opfylder en betingelse. reduktion af en liste til ét element, som afspejler en beregning på listens elementer. Det er attraktivt at være i stand til at programmere generelle abstraktioner, som afspejler forskellige former for gennemløb af lister. Gennemløb af lister er så hyppige, at det kan betale sig at programmere dem een gang for alle, og derefter parametrisere gennemløbene med passende handlinger. Denne slide postulerer, at der er forskellige former for gennemløb, som vi kan vælge at programmere hver for sig. I Lisp (hvor lister, som omtalt, spiller en helt afgørende rolle) findes der (blandt andre) funktioner, der afspejler de tre nævnte former for listegemmenløb. Disse funktioner hedder traditionelt map, filter og reduce. Disse funktioner kaldes højere ordens funktioner, fordi de tager en funktion som parameter, der udtrykker handlingen på hvert enkelt liste element. Eksempel: Vi ønsker at udskrive de lige tal i listen L af tal. Dette kan let og elegant gøres med (map print (filter even L)) hvor even er en funktion (et prædikat), der returnerer, hvorvidt et tal er lige. 220
11 Gennemløb af lister i Eiffel. Class List Class MyList Operation i klassen MyList: element_action is -- action to be performed on -- every element in the list. do... end Operationer i klassen List: element_action is deferred end; map is -- apply the function element_action -- on every element of the list. do from start until offright loop element_action; forth end --loop end; --map Denne slide illustrerer, hvordan tilsvarende gennemløb af lister kan finde sted i Eiffel. Vi tager udgangspunkt i en klasse List, som i princippet kunne være (men ikke er) linked_list. I List kan vi programmere en procedure, som gennemløber listen, og som på hvert element kalder en anden funktion, element_action. Element_action kan enten være forudannonceret (deferred) eller blot tom. (Sidstnævnte er sikkert at foretrække i praksis, idet det herved bliver muligt at instantiere klassen List). Når man vil programmere et bestemt gennemløb, laver man i en subklasse, hvori proceduren element_action er redefineret. Dette kan forekomme som en tung fremgangsmåde, i det mindste i forhold til Lisp løsningen, som vi omtalte i tilknytning til forrige slide. Hvis vi ønsker at anvende to forskelligt parametriserede gennemløb kommer vi i problemer. Eiffel håndterer ikke iteration over liste på helt sammen måde som skitseret. Men Eiffel teknikken er tæt beslægtet med den viste fremgangsmåde. Eiffel benytter en særlig klasse, linear_iter, til at beskrive iteration. Linear_iter kan arves (sammen med andre klasser i multipel nedarvning) hvis man ønsker at iterere over lister. Interesserede læsere kan konsultere Eiffel biblioteket og tilknyttede eksempler på dette. 221
12 Fælles egenskaber af stakke og køer. I stakke og køer er højst ét element i strukturen tilgængelig for aflæsning og udtræk. Stakke og køer er datatyper, hvor aflæsning og modifikation finder sted i strukturernes yderpunkter. Stakke og køer kan opfattes som specialiseringer af enten arrays eller kædede lister. 222
13 Introduktion til stakke. hoved push pop top En stak er en liste, hvor elementer indsættes, aflæses og slettes i hovedet af listen. En stak følger en LIFO (Last In First Out) disciplin. Traditionelle operationer: hale Indsættelse af element i stak: push Sletning af element fra stak: pop Aflæsning af element fra stak: top Vi har adskillige gange tidligere på kurset anvendt datatypen stak som illustration af forskellige aspekter ved specifikation af ADT-er og objekt-orienteret programmering. Af en eller anden grund er stakken mange forfatteres foretrukne eksempel i en bred vifte af sammenhænge. I denne forelæsning vil vi derfor kun kort opsummere stakke's egenskaber og algebraiske specifikation, først og fremmest som en kontrast til køer. Tidskompleksiteten af de omtalte operationer er konstant. 223
14 Algebraisk specifikation af stakke. Type Stack[X] Functions create: -> Stack[X] push: X x Stack[X] -> Stack[X] pop: Stack[X] -> Stack[X] top: Stack[X] -> X empty: Stack[X] -> Boolean Axioms for all x in X, S in Stack[X] pop(create()) = Undefined pop(push (x, S)) = S top(create()) = Undefined top(push (x, S)) = x empty(create()) = true empty(push (x, S)) = false Opgave. Vi har tidligere lavet en simpel specifikation af lister (se slide med "algebraisk specifikation af lister"). Sammenlign denne specifikation af lister med specifikationen af stakke, som givet ovenfor. Hvad er forskelle og ligheder? 224
15 Introduktion til køer. leave hoved En kø er en liste, hvor elementer indsættes i halen og udtages i hovedet af listen. En sådan kø følger en FIFO (First In First Out) disciplin. hale Traditionelle operationer: enter Indsættelse af element i køen: enter. Udtagning af element fra køen: leave. Aflæsning (uden udtagning) af element fra køen: front. Man kunne naturligvis også vedtage, at elementer indsættes i køens hoved og "trækkes ud af halen". Det vigtige er, at man følger en fast konvention. Hvis vi med lister mener en bestemt klasse LIST, er det måske ikke helt ligegyldigt hvilken konvention vi følger. Vi ønsker naturligvis at arrangere tingene sådan, at operationerne bliver hurtigst mulige, med så lille pladsbehov som mulig, og at vi som programmører slipper lettest muligt om ved programmeringen af køen givet LIST. Der findes alternative navne på de karakteristiske kø-operationer. I Weiss kaldes enter for enqueue og leave for dequeue. 225
16 Algebraisk specifikation af køer. Type Queue[X] Functions create: -> Queue [X] enter: X x Queue [X] -> Queue [X] leave: Queue [X] -> Queue [X] front: Queue[X] -> X size: Queue[X] -> Integer isempty: Queue[X] -> boolean Axioms for all x in X, Q in Queue[X] leave(create()) = Undefined leave(enter (x, Q)) = if isempty(q) then create() else enter(x, leave (Q)) front(create()) = Undefined front(enter (x, Q)) = if isempty(q) then x else front(q) size(create()) = 0 size(enter (x, Q)) = 1 + size(q) isempty(create()) = true isempty(enter (x, Q)) = false Konstruktorerne i denne algebraiske specifikation er create og enter. Forskellen i indsættelses- og slettedisciplin mellem stakke og køer fremgår tydeligt, hvis man sammenligner ligninger for leave i denne specifikation med ligningerne for pop i stack. 226
17 Prioritetskøer. En prioritetskø er en datatype, hvor hvert kø-element har tilknyttet en prioritet. Karakteristiske operationer: Enter(el, pr) Indsæt elementet el med prioritet pr. Leave Udtag elementet med den højeste prioritet. To naive implementationsstrategier: 1. Enter ordner elementerne efter prioritet. O(n). Leave udtager element. O(1) 2. Leave søger efter element med max prioritet. O(n). Enter indsætter element. O(1) Der findes en meget bedre implementationsstrategi, som kaldes en hob. Vi vender tilbage til prioritetskøer og hobe senere i kurset, hvor vi vil bruge et helt kapitel på emnet. 227
16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype.
16 Træer. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. Gennemløb af binære træer. Træer i Eiffel. 229 Definition af et træ.
Læs mere22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.
22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327
Læs mere3 Algebraisk Specifikation af Abstrakte Datatyper.
3 Algebraisk Specifikation af Abstrakte Datatyper. Specifikation kontra program. Bestanddele af en algebraisk specifikation. Klassificering af funktioner i en ADT. Systematisk definition af ligninger.
Læs mereAbstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Læs mere4 Basal Objekt-orienteret Programmering I.
4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.
Læs mere28 Algoritmedesign. Noter. PS1 -- Algoritmedesign
28 Algoritmedesign. Algoritmeskabelon for Del og Hersk. Eksempler på Del og Hersk algoritmer. Binær søgning i et ordnet array. Sortering ved fletning og Quicksort. Maksimal delsums problem. Tætteste par
Læs mereIntroduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer
Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt
Læs mereIntroduktion til datastrukturer. Philip Bille
Introduktion til datastrukturer Philip Bille Plan Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Datastrukturer Datastrukturer Datastruktur: Metode til at organise data så det kan søges
Læs mereIntroduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer
Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt
Læs mereIntroduktion til datastrukturer
Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Philip Bille Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller
Læs mereAlgoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012
Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave
Læs mere1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer
1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer på disse. Typer af lister: Array Enkelt linket liste Dobbelt linket Cirkulære lister Typer af køer: FILO FIFO
Læs mereStakke, køer og lidt om hægtede lister - kapitel 16 og 17
Datastrukturer & Algoritmer, Datalogi C Forelæsning 2/11-2004 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Fundamentale datastrukturer man får brug for igen og igen Et
Læs mere29 Opsamling af Objekt-orienteret Programmering.
29 Opsamling af Objekt-orienteret Programmering. Bottom-up kontra top-down design. "The shopping list approach". Hvordan finder man på objekterne. Klasser og dataabstraktion. Klasse interface og interface-teknikker.
Læs mereRename og redefine. Abstrakte klasser. Dynamisk binding.
11 Nedarvning II. Enkeltnedarvning i Eiffel. Rename og redefine. Initialisering af superklasse-dele af et objekt. Interfaces til klienter og subklasser. Typesammenlignelighed og polymorfi. Abstrakte klasser.
Læs mere19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.
19 Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. Sammenligning af hashtabeller og søgetræer. 281 Hashing-problemet (1). Vi ønsker at afbilde n objekter på en tabel
Læs mereStakke, køer og lidt om hægtede lister
Datastrukturer & Algoritmer, Datalogi C Forelæsning 4/11-2003 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Hvorfor? Fundamentale datastrukturer man får brug for igen og
Læs mereDatastrukturer (recap)
Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang
Læs mere20 Filer og indekser.
20 Filer og indekser. Filbegrebet. Sekventielle og direkte filer. Filer i Eiffel. Eksternt dataområde for objekter. Lageradminstration og postlængder. Indeksbegrebet. Konsekutiv, kædet og vilkårlig organisering.
Læs mere26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.
26 Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. Hvad er programverifikation? Bevisregel for 'tom kommando'. Bevisregel for assignment. Bevisregler for selektive
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Varighed: timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.
Læs mereProgrammeringscamp. Implementer funktionerne én for én og test hele tiden.
Programmeringscamp De to opgaver træner begge i at lave moduler som tilbyder services der kan bruges af andre, samt i at implementere services efter en abstrakt forskrift. Opgave 1 beder jer om at implementere
Læs mere17 Søgning og Søgetræer.
17 Søgning og Søgetræer. Lineær og inær søgning i lister. inære søgetræer. Søgning efter knude i træ. Indsættelse af knude i træ. Søgning i og sortering af inært søgetræ. Sletning af knude i inært søgetræ.
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereUdvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser.
10 Nedarvning I. Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Dynamisk binding og virtuelle operationer. Decentraliseret/centraliseret
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:
Læs mere18 Multivejstræer og B-træer.
18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.
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 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 mereÅrsagen til fejl. Erkendelse af fejl. Håndtering af fejl.
9 Fejlhåndtering Årsagen til fejl Erkelse af fejl Håndtering af fejl Fejlerkelse og -håndtering i objekt-orienterede sprog Fejlerkelse og -håndtering i Eiffel Udbredelse af fejl i Eiffel Nuanceret fejlhåndtering
Læs mereVideregående Programmering for Diplom-E Noter
Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså
Læs mereDatastrukturer (recap) Datastruktur = data + operationer herpå
Dictionaries Datastrukturer (recap) Datastruktur = data + operationer herpå Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data (ofte underforstået, også
Læs mereBinære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo
Philip Bille Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[] og satellitdata data[]. operationer. PREDECESSOR(k): returner element med største nøgle k.
Læs merePrioritetskøer og hobe. Philip Bille
Prioritetskøer og hobe Philip Bille Plan Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering Prioritetskøer Prioritetskø Vedligehold en dynamisk mængde S af
Læs mereDanmarks Tekniske Universitet
ksamen 036, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 036. Varighed: timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.
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 mere02105 Eksamensnoter. Lasse Herskind S maj Sortering 3
02105 Eksamensnoter Lasse Herskind S153746 12. maj 2017 Indhold 1 Sortering 3 2 Analyse af algoritme 4 2.1 Køretid.......................................... 4 2.2 Pladsforbrug.......................................
Læs mereI denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.
Denne guide er oprindeligt udgivet på Eksperten.dk Collections i.net Når du kigger i namespacet System.Collections finder du over 10 forskellige klasser. At vælge den rigtige til netop din applikations
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således
Læs mereDanmarks Tekniske Universitet
side af 2 sider anmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 02326. Varighed: 4 timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
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 mereSoftware Construction 1. semester (SWC) januar 2014 Spørgsmål 1
Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),
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 mereObjekt-orienteret programmering uden klasser: Self.
Objekt-orienteret programmering uden klasser: Self. Sammenligning klasse-baseret og klasseløs programstrukturering. Basale forhold Singulære objekter Dynamisk nedarvning Variable i forhold til metoder.
Læs mereDanmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 0205. Varighed: 4 timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.
Læs mere2 Abstrakte datatyper.
2 Abstrakte datatyper. Motivere eksempel: top-down udvikling af program 'mini-bank' Strukturering af et program: efter data eller funktion? Definition af en abstrakt datatype og tilknyttede begreber. Fænomener,
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 mereSoftware Construction 1 semester (SWC) Spørgsmål 1
Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /
Læs mereOrienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.
Orienterede grafer Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer Philip Bille Orienterede grafer Introduktion Repræsentation Søgning Topologisk
Læs mere14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.
14 Algoritmeanalyse. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. O og Ω. Køretid for forskellige kontrolstrukturer. Eksempler på algoritmeanalyse. Eksponentiel og polynomiel
Læs mereAlgoritmedesign med internetanvendelser ved Keld Helsgaun
Algoritmedesign med internetanvendelser ved Keld Helsgaun 1 Analyse af algoritmer Input Algoritme Output En algoritme er en trinvis metode til løsning af et problem i endelig tid 2 Algoritmebegrebet D.
Læs mereDanmarks Tekniske Universitet
side af 3 sider anmarks Tekniske Universitet Skriftlig prøve, den 29. maj 203. ursusnavn: lgoritmer og datastrukturer ursus nr. 02326. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe
Læs mereOrienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk
Philip Bille Orienteret graf (directed graph). Mængde af knuder forbundet parvis med orienterede kanter. Vejnetværk Knude = vejkryds, kant = ensrettet vej. deg + (6) =, deg - (6) = sti fra til 6 8 7 9
Læs mereBinære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille
Binære søgetræer Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb Philip Bille Binære søgetræer Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor
Læs mereRolf Fagerberg. Forår 2012
Forår 2012 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM502 og DM503 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM502 og DM503 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,
Læs mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Martin Elsman Department of Computer Science University of Copenhagen DIKU September 27, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 September
Læs mereOrienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer
Philip Bille Orienteret graf. Mængde af knuder forbundet parvis med orienterede kanter. deg + (7) =, deg - (7) = Lemma. v V deg - (v) = v V deg + (v) = m. Bevis. Hver kant har netop en startknude og slutknude.
Læs mereDatastrukturer (recap)
Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang
Læs mereAlgoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)
Algoritmeanalyse Identificer essentiel(le) operation(er) Øvre grænse for algoritme Find øvre grænse for antallet af gange de(n) essentielle operation(er) udføres. Øvre grænse for problem Brug øvre grænse
Læs mereDanmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af
Læs mereBasale forudsætninger. Sortering ved fletning med tre bånd, i to faser.
25 Sortering III. Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. Sortering ved fletning, med fire bånd, i én fase (balanceret fletning). Polyfase fletning med tre bånd. Generaliseret
Læs mereUser Guide AK-SM 720 Boolean logic
User Guide AK-SM 720 Boolean logic ADAP-KOOL Refrigeration control systems Anvendelse Funktionen er indeholdt i Systemmanager type AK-SM 720, og kan anvendes til brugerdefinerede funktioner. Funktionerne
Læs mereDanmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:
Læs mereBinære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo
Philip Bille er. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle x.key og satellitdata x.data. operationer. PREDECESSOR(k): returner element x med største nøgle k. SUCCESSOR(k):
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 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 mereAlgoritmisk geometri
Algoritmisk geometri 1 Intervalsøgning 2 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Antag, at vi ønsker at
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 mereDATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004
Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes
Læs mereTree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
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 mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Typer og Mønstergenkendelse Martin Elsman Datalogisk Institut Københavns Universitet DIKU 23. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017
Læs mereSkriftlig Eksamen DM507 Algoritmer og Datastrukturer
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se
Læs mereProjekt - Visual Basic for Applications N på stribe
Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,
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 merePHP 3 UGERS FORLØB PHP, MYSQL & SQL
PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at
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 mereTræer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/
Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/11-2004 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),
Læs mereSøgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer...
Datastrukturer & Algoritmer, Datalogi C Forelæsning 11/11-2003 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),
Læs mere30 Objekt-orienteret Programmering i Andre Sprog.
30 Objekt-orienteret Programmering i Andre Sprog. Abstrakte datatyper i Pascal. Abstrakte datatyper i Modula og Ada. C++ Overordnet organisering Instantiering og initialisering. Interfaces. Nedarvning.
Læs mereDATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi
DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 (tretten) Eksamensdag: Tirsdag den 8. april 2008,
Læs mereDanmarks Tekniske Universitet
Eksamen 02105, F14 side 1 af 14 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 2014. Kursusnavn: Algoritmer og datastrukturer 1 Kursusnummer: 02105 Hjælpemidler: Skriftlige hjælpemidler. Det
Læs mereIntervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed
Algoritmisk geometri Intervalsøgning 1 2 Motivation for intervaltræer Intervalsøgning Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Vi kan
Læs mereDatalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning
Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:
Læs mereDesign by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater
Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design
Læs mereRolf Fagerberg. Forår 2013
Forår 2013 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM536 og DM537 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM536 og DM537 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,
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 mereÅben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser
3/10/96 Seminaret den 26/10 vil omhandle den sidste fase af analysen og de første skridt i kodegenereringen. Det drejer sig om at finde betydningen af programmet, nu hvor leksikalsk og syntaktisk analyse
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 mereSkriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =
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 merePrioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille
Prioritetskøer Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering Philip Bille Prioritetskøer Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer
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 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 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 mereListen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:
Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra
Læs mere