Plan-X: XCompact. Komprimeret serialisering af semi-struktureret data. Bachelorprojekt i datalogi. Christian Iversen, Espen Højsgaard, Rune Højsgaard

Størrelse: px
Starte visningen fra side:

Download "Plan-X: XCompact. Komprimeret serialisering af semi-struktureret data. Bachelorprojekt i datalogi. Christian Iversen, Espen Højsgaard, Rune Højsgaard"

Transkript

1 Plan-X: XCompact Komprimeret serialisering af semi-struktureret data Bachelorprojekt i datalogi Christian Iversen, Espen Højsgaard, Rune Højsgaard Forår 2005 Datalogisk Institut Københavns Universitet Vejleder: Fritz Henglein

2 Resumé Denne opgave beskriver en metode til komprimeret serialisering af XML-dokumenter, kaldet XCompact. XCompact adskiller sig fra andre XML-specifikke kompresionsmetoder, ved at den kompakte serialisering kan navigeres som en træstruktur. Vores evaluering viser, at XCompact ikke kan konkurrere med eksisterende værktøjer på kompression alene i bedste fald komprimerer XCompact halvt så godt. XCompact s serialiserede format kan bruges som backend til XML Store, hvilket vi har implementeret som CompactStore. Evalueringen viser at CompactStore i nogle tilfælde er hurtigere og i andre tilfælde langsommere end Koala XML Store s LocalXMLStore. Tak til For projektoplæg, råd og vejledning vil vi gerne takke Fritz Henglein. Ydermere vil vi gerne takke Henning Niss, der har været behjælpelig med at forklare XMLStorearkitekturen. Rasmus Jensen skal have tak for en god introduktion til komprimering og for henvisninger til artikler om kompression. 2

3 INDHOLD Indhold Indhold 3 1 Indledning Problemformulering Uddybning og afgrænsning Relateret arbejde Konklusion Baggrundsmateriale XML Indlæsning XOP Document Value Model og XML Store Værdiorienteret programmering DVM XML Store Kompression LZ77 og LZ Huffman-kodning XML kompression Komprimeret og navigerbar serialisering af XML Designmål Begrænsninger Navigation Round-tripping Struktur og data Attributter Data Gruppering Komprimering Struktur En naiv strukturrepræsentation Opdeling i struktur og metadata Samlet liste af knuder Pladseffektiv repræsentation af talliste Pladseffektive pegere til data Delte undertræer Huffman-kodning af indeksnumre Effektiv kodning af knude-navne Side 3 af 169

4 INDHOLD 3.5 Det endelige format Implementation Huffman-kodning XMLStore Læsevejledning Brugervejledning XCompress & XDecompress CompactStore Afprøvning Empirisk evaluering Datasæt Platform Kompression XCompact Sammenligning med andre kompressorer Navigation Praktiske problemer og mulige fejlkilder Forespørgsler Sammenligning af CompactStore og LocalXMLStore Anvendelighed Fremtidigt arbejde 43 7 Litteratur 44 A Scripts 47 A.1 Script til XPath-testkørsler A.2 Script til kompressionstestkørsler B Kildekode 50 B.1 org.planx.xcompact.cli B.1.1 CleanXML.java B.1.2 CompactBuilder.java B.1.3 CompactDumper.java B.1.4 CropXML.java B.1.5 StatXML.java B.1.6 StoreBuilder.java B.1.7 StorePath.java B.1.8 XCompress.java B.1.9 XDecompress.java B.1.10 XMLStoreBuilder.java B.1.11 XMLStoreDumper.java Side 4 af 169

5 INDHOLD B.1.12 XPathBench B.2 org.planx.xcompact.compression B.2.1 DifferenceDecodeIntIterator.java B.2.2 DifferenceDecodeLongIterator.java B.2.3 IntegerListCompression.java B.2.4 Options.java B.2.5 SimpleDecodeIntIterator.java B.2.6 SimpleDecodeLongIterator.java B.2.7 StringListCompression.java B.3 org.planx.xcompact.compression.huffman B.3.1 HuffmanCodeBook.java B.3.2 HuffmanCodeCalculator.java B.3.3 HuffmanCodeTable.java B.3.4 HuffmanElement.java B.3.5 HuffmanException.java B.3.6 HuffmanIterator.java B.3.7 HuffmanList.java B.3.8 HuffmanReader.java B.4 org.planx.xcompact.compression.xml B.4.1 AbstractElement.java B.4.2 CodeBookBuilder.java B.4.3 CompactNode.java B.4.4 DefaultLocator.java B.4.5 DefaultLocatorFormatter.java B.4.6 DefaultLocatorReader.java B.4.7 DefaultXMLCompressor.java B.4.8 DefaultXMLDecompressor.java B.4.9 Element.java B.4.10 Header.java B.4.11 IncompatibleLocatorException.java B.4.12 Locator.java B.4.13 LocatorFormatter.java B.4.14 LocatorReader.java B.4.15 NodeInfo.java B.4.16 SAXHandler.java B.4.17 StructureSerializer.java B.4.18 UnsupportedFieldException.java B.4.19 XMLCompressor.java B.4.20 XMLDecompressor.java B.5 org.planx.xcompact.compression.xml.containers B.5.1 Container.java B.5.2 ContainerManager.java B.5.3 ContainerReader.java Side 5 af 169

6 INDHOLD B.5.4 DeflateContainerReader.java B.5.5 DeflateSharedContainer.java B.5.6 DeflateSharedContainerManager.java B.5.7 DeflateSingleContainer.java B.5.8 DeflateSingleContainerManager.java B.5.9 DeflateTagContainerManager.java B.5.10 HuffmanSharedContainer.java B.5.11 HuffmanSharedContainerManager.java B.5.12 HuffmanSharedContainerReader.java B.5.13 HuffmanSingleContainerManager.java B.5.14 HuffmanTagContainerManager.java B.5.15 RawContainerReader.java B.5.16 RawSharedContainer.java B.5.17 RawSharedContainerManager.java B.5.18 RawSingleContainerManager.java B.5.19 RawTagContainerManager.java B.6 org.planx.xcompact.io B.6.1 BitInputStream.java B.6.2 BitOutputStream.java B.6.3 DataInputStreamAdapter.java B.6.4 FileList.java B.6.5 LimitedInputStream.java B.6.6 RandomAccessBitInput.java B.7 org.planx.xcompact.store B.7.1 AbstractIterator.java B.7.2 CompactReader.java B.7.3 CompactReference.java B.7.4 CompactStore.java B.7.5 CompactStoreReference.java B.7.6 CorruptedStoreException.java B.7.7 ProxyNode.java B.8 org.planx.xcompact.util B.8.1 GenericArray.java B.8.2 Pair.java B.8.3 ResetIterator.java B.8.4 Unboxer.java B.8.5 UnboxingIterator.java Side 6 af 169

7 1 INDLEDNING 1 Indledning XML-dokumenter er selvbeskrivende tekstdokumenter, der indeholder semi-struktureret data. Indholdet af et XML-dokument kan opfattes som en træstruktur med ustruktureret data ved bladene. XML-dokumenter kan læses af både mennesker og maskiner en egenskab der opnås med en meget verbos og delvis redundant syntaks, hvilket medfører at XMLdokumenter optager meget lagerplads i forhold til deres informationsindhold. Sammenligner man eksempelvis med en almindelig databaseløsning, hvor metadata gemmes én gang for hele databasen, gemmes det i XML én gang for hver post (eng. record). Da XML-dokumenter er pladskrævende er det ønskværdigt at komprimere dem. Dette kan gøres med generelle værktøjer til tekstkomprimering som gzip eller bzip2. Alternativt kan værktøjer, der er specialiseret til kompression af XML anvendes, f.eks. XMill af Liefke og Suciu [20]. XMill kan komprimere XML-dokumenter omtrent lige så godt som bzip2. Denne kompression opnås ved at samle ensartet data i containere, og komprimere hver container for sig med gzip eller brugerspecificerede kompressionsværktøjer. Disse kompressorer reducerer pladsforbruget, men bevirker at det komprimerede XMLdokument ikke længere kan læses og tolkes uden en komplet dekompression en operation der kræver tid og hukommelse. Det er derfor ønskværdigt med et værktøj, der kan komprimere og serialisere XML-dokumenter til et format, hvor strukturen kan navigeres uden en forudgående deserialisering og dekompression. XML Store [23] er en værdiorienteret lagerfacilitet til gemme XML-dokumenter. XML S- tore implementerer Document Value Model (DVM) API et, der modellerer XML-dokumenter som et træ, hvor man kan følge kanterne fra en knude til dens børn. Metoden, der beskrives i denne rapport, er målrettet mod at lave en komprimeret serialisering af XML, hvorpå en pladsbesparende implementation af DVM API et kan baseres. Rapporten antager at læseren er bekendt med grundlæggende datalogiske begreber eksempelvis træstrukturer men forudsætter ikke et kendskab til hverken komprimering eller XML. Denne rapport, kildekode og datasæt m.m. kan hentes fra projektets hjemmeside [37]. 1.1 Problemformulering Projektet har til formål at undersøge følgende: Er det mulig at lave en komprimeret serialisering af et XML-dokument, der effektivt kan navigeres efter DVM-modellen og som endvidere har en kompressionsratio svarende til XMill s. 1.2 Uddybning og afgrænsning De basale idéer vi vil basere vores metode på er følgende: 1. identiske undertræer slås sammen, hvorved træet transformeres til en DAG 1 1 Directed Acyclic Graph Side 7 af 169

8 1 INDLEDNING 2. anvend tekstkomprimering på karakterdata 3. DAG en serialiseres som en Huffman-kodet listerepræsentation, baseret på knudernes indvalens Punkt 1. udføres allerede effektivt i XML Store og vi vil derfor ikke undersøge dette aspekt den interesserede læser henvises til [5]. Punkt 2. er et område, hvor flere projekter, bl.a. XMill, har vist at en stor kompression kan opnås, ved at tage karakterdatas placering i træstrukturen i betragtning. Vi vil i denne rapport se på, hvilke modeller andre projekter har anvendt og hvilke der er brugbare, når navigationen skal bevares. Punkt 3. forekommer som et simpelt spørgsmål om at implementere en Huffman-koder. Dette er korrekt med hensyn til selve kodningen af strukturen. Men når det kommer til kodebogen, så er der mange måder at komprimere og serialisere den. Det særlige ved vores kodebog er, at den indeholder graf-knuder med tilknyttet information, nemlig knudens navn. Da mange knuder i et XML-dokument ofte har samme navn, vil det være uhensigtsmæssigt at gemme navnet sammen med hver knude. Hvis dette kan undgås, kan der spares plads. 1.3 Relateret arbejde Der findes meget litteratur om komprimering generelt, men mængden af litteratur om XML-specifik komprimering er meget begrænset. De metoder vi er bekendt med, er XMill [20], XGrind [25], SCM [3] og Multiplexed Hierachical Modelling (MHM) [7], der er baseret på Prediction by Partial Match (PPM). Disse metoder er belbeskrevne og det er det er ideerne fra disse, som vores metode baserer sig på. Vi har i afsnit 2.4 en beskrivelse af de fire metoder. 1.4 Konklusion Vi har i denne opgave designet, implementeret og evalueret en metode XCompact til komprimeret serialisering af XML-dokumenter. Vores kompression er ikke nær så god som XMill s, men 2-3 gange dårligere. I modsætning til XMill er vores serialiserede format derimod navigerbart. Metoden er implementeret som en backend til XML Store kaldet CompactStore. Hastigheden af navigation i CompactStore afviger både positivt og negativt fra LocalXMLStore afhængig af navigationsmønsteret og datasættet ydere evaluering og profilering er nødvendig for at karakterisere og begrunde forskellene. Først ordens Markov-modellen fra XMill har for vores metode givet dårligere resultater, end ved at komprimere alt karakterdata samlet. Dette kan skyldes, den anvendte kompressionsmetode. Side 8 af 169

9 2 BAGGRUNDSMATERIALE 2 Baggrundsmateriale I det følgende introduceres de koncepter, som vores metode bygger på. Vi giver ikke en tilbundsgående behandling af de pågældende emner, men fokuserer på de aspekter, der er relevante for vores metode. 2.1 XML Siden de første computere kom på markedet, er der blevet opfundet et utal af specialiserede filformater til opbevaring af data i det faste lager. Mange af disse formater er kun blevet brugt til ganske få projekter, hvorved al programmeringsarbejdet til at opnå læse- og skriveadgang har måttet gentages for hvert program. Ud over det åbenlyse problem at udviklingen tager længere tid, er der andre hensyn, der taler imod denne udviklingsmodel eksempelvis at eventuelle fejl, kun skulle rettes én gang, hvis programmerne kunne dele koden, der tilgår datafilerne, Ud fra et ønske om at løse dette problem, har et antal formater med varierende grad af standardisering bag sig opnået stor udbredelse. Et af disse er XML, der kan bruges til at beskrive semi-struktureret data. I XML (extensible Markup Language) søger man at gøre ethvert dokument læsbart for mennesker ved at bruge sigende navne i alle notationer, og mindske mængden af data der ikke kan fortolkes uden hjælpeprogrammer. Denne begrænsning er et ønskværdigt mål mere end en teknisk begrænsning, da det så absolut er muligt at konstruere XMLdokumenter, der er aldeles uigennemskuelige for mennesker. Dette gøres nemmest ved at ignorere mulighederne for at angive strukturen af de data der arbejdes med, som det ses i figur 1. 1 <data > c2e8975aed96f735700b84fa </ data > Figur 1: Eksempel på ulæselig XML Grundlæggende er en XML-fil en tekstuel repræsentation af et datatræ, og der er således én rodknude, der indeholder hele dokumentet. Hver knude kan have et ubegrænset antal attributter og børn i form af tekstdata og yderligere knuder. Et eksempel på velstruktureret XML ses i figur 2. Knuder har navngivne markeringer, tags, der har formen <tagname>contents</tagname>, med mindre knuderne ingen børn har, i hvilket fald de kan, men ikke skal, have formen <tagname/>. Attributdata har formen name="value", og skrives inden i tagget, som det ses på figuren. Det er ikke tilladt at bruge samme attributnavn flere gange i samme tag. 1 < rootnode > 2 <child name =" value ">Character data </ child > 3 <child name =" other ">More data </ child > 4 </ rootnode > Figur 2: Eksempel på velstruktureret XML Side 9 af 169

10 2 BAGGRUNDSMATERIALE Indlæsning Der findes flere metoder til at tilgå XML-filer, hvoraf Simple API for XML [21] og Document Object Model [10] er de to mest udbredte. SAX er en hændelsesbaseret API, der giver en række signaler til brugerprogrammet når man når til en ny knude, støder på tegndata, afslutter en knude, etc. I figur 3 ses et eksempel på SAX-hændelser. 1 start knude : rootnode 2 start knude : child ( attributer : name =" value ") 3 tegndata : " Character data " 4 slut knude : child 5 start knude : child ( attributer : name =" other ") 6 tegndata : " More data " 7 slut knude : child 8 slut knude : rootnode Figur 3: SAX-hændelser til XML i figur 2 Der er flere fordele ved SAX frem for andre API er til læsning af XML. En SAXparser leverer løbende events med data fra dokumentet, mens dokumentet parses. Forbruget af arbejdshukommelse kan derfor holdes lavt, da parseren leverer data direkte videre til applikationen det er så applikationen der er ansvarlig for at tolke eventen og vælge om data skal bevares i hukommelsen. DOM er baseret på en objektorienteret model af dataindholdet i XML-filen. Dokumentet præsenteres som rodknuden i et træ. Det er via denne knude muligt at få dens attributter og et vilkårligt barn. Fordelen ved DOM er, at klient-applikationen ikke skal hverken parse eller tolke strukturen i dokumentet, men kan operere på dokumentet som en træstruktur. Ulempen er, at det er DOM-implementationen, der afgør, hvilket data, der skal holdes i arbejdshukommelsen hvilket for en del DOM-implementationer betyder at hele dokumentet holdes i arbejdshukommelsen XOP Binær data kan ikke direkte indlejres i et XML-dokument, men skal først kodes som karakterdata eksempelvis i form af base64 kodning [11, 33]. En sådan kodning får data til at fylde mere og er endvidere tidskrævende. XOP (XML-binary Optimized Packaging) er en metode til at serialisere XML med binær data uden brug af base64-kodning [12]. I stedet for at placere det base64-kodede binære data i dokumentet, indsættes i stedet et xop:include-element, der indeholder en reference til det binære data. Dermed separeres det binære data fra XML-dokumentet. Det transformerede XML-dokument og de binære datablokke kan derefter serialiseres som separate dele i et pakke-format. Side 10 af 169

11 2 BAGGRUNDSMATERIALE Når dokumentet skal læses, kan en generisk XML-parser bruges på det transformerede dokument. De binære dele kan derefter læses efter behov af applikationen, uden først at skulle konvertere dem fra base Document Value Model og XML Store XML Store er et applikationskonfigurerbart, distribueret, mobilt persistenslag til opbevaring af semi-strukturerede data (XML-dokumenter i særdelelshed) baseret på en værdiorienteret dokumentmodel og grænseflade. XML Store implementerer DVM (Document Value Model) API et, der er en værdiorienteret DOM-lignende grænseflade. Dette afsnit indeholder en kort gennemgang af værdiorienteret programmering, DVM og XML Store. En komplet gennemgang af DVM og XML Store kan findes i [23] Værdiorienteret programmering I værdiorienteret programmering kan værdier ikke opdateres. Man kan binde en værdi til et navn, men man kan ikke opdatere værdien, som man kan i imperative sprog. I SML-syntaks bindes en værdi f. eks. således: 1 - val x = [5]; 2 val x = [5] : int list Figur 4: Binding i ML Hvis listen x opdateres ved at tilføje et element, vil en ny liste blive oprettet og efterlade den gamle uændret. Referencen til værdien bliver igen bundet til x, og denne binding overskygger den gamle, der altså stadig eksisterer: 1 - val x = 42 :: x; 2 val x = [42,5] : int list Figur 5: Opdatering i ML Det er altså muligt at konstruere nye værdier ud fra andre værdier. Bindinger til navne kan altså også ændres, men værdier kan ikke ændres, som det fremgår af følgende eksempel: 1 - val y = 3 :: x; 2 val y = [3, 42, 5] : int list 3 - val x = [0]; 4 val x = [0] : int list 5 y; 6 val it = [3, 42, 5] : int list Figur 6: Værdier er ikke-muterbare Værdiorienterede modeller er attraktive i netværkssammenhænge som for eksempel XML Store. Da en værdi ikke kan ændres destruktivt, er der ikke behov for en transaktionsprotokol til netværket. Der er altså er ingen overensstemmelsesproblemer ved caching, da opdaterede værdier gemmes som nye værdier og værdier ikke bliver slettet. Side 11 af 169

12 2 BAGGRUNDSMATERIALE DVM DVM er en træorienteret, værdiorienteret grænseflade, specielt designet til XML Store. DVM minder om DOM, men adskiller sig ved at være værdiorienteret og understøtter dermed, i modsætning til DOM, ikke destruktive opdateringer 2. Knuder er de centrale elementer i DVM. Hele dokumentet repræsenteres ved en enkelt knude, rodknuden, og undertræerne (rodens børn) repræsenteres ligeledes som knuder. En knude har et navn, en mængde attributter samt en sæt børn. Navigation i strukturen foregår ved at følge en reference fra en knude til et af dens børn. En blok ustruktureret data repræsenteres i DVM i form af en knude, der hverken har attributter eller børn, men kun en strengværdi. Ustruktureret data er således en atomisk enhed i DVM XML Store XML Store implementerer DVM og håndterer persistens og distribution. Det har en lagdelt arkitektur der består af DVM laget, disklaget, foruden navne-service og referenceservice. Disklaget håndterer indlæsning og skrivning til pladelageret og håndterer også referenceservice, der bruges når der skrives og læses. Referenceservicen er basalt set en hashtabel, der oversætter fra nøgle til data. DVM-laget håndterer navneservices, der bruges til at finde de symbolske navne. XML Store benytter Multiset discrimination (se [5]) til at identificere identiske værdier og erstatter dem med en enkelt, delt instans. F.eks. vil undertræ c kun blive gemt én gang, hvis følende dokumenter gemmes i XML Store: 1 <doc1 > <doc2 > 2 <a>foo </a> <a>bar </a> 3 <c> <c> 4 <b>c1 <b>c1 5 </b> </b> 6 <d>c2 <d>c2 7 </d> </d> 8 </c> </c> 9 </ doc1 > </ doc2 > Figur 7: Dokumenter med fælles undertræ Træstukturen for XML-dokumenterne i figur 7 kan ses i figur Kompression Der findes et utal af metoder til datakompression. Disse metoder kan grundlæggende inddeles i to grupper: tabsfri og ikke-tabsfri. Omend ikke-tabsfri kompression har mange 2 DVM har faktisk mulighed for opdateringer i form af de såkaldte Mutable nodes. Vi udelader dem i vores fremstilling, da vi ikke vil håndtere dem i vores metode. Side 12 af 169

13 2 BAGGRUNDSMATERIALE doc2 doc1 a a c bar foo b d (a) doc2 C1 (b) doc1 C2 Figur 8: Delte undertræer anvendelser især kan nævnes komprimering af billeder og lyd vil vi kun fokusere på de tabsfri metoder. Motiverne for datakompression kan være meget forskellige begrundelserne for at anvende datakompression i XML Store, er følgende: pladelageret udnyttes bedre. mindre data skal overføres fra pladelageret til arbejdshukommelsen. mindre data skal overføres mellem peers i et distribueret XML Store. Omkostningen ved at anvende komprimering, er at centralenheden skal foretage flere beregninger, men ikke så mange at den tidsmæssige fordel ved at skulle flytte mindre datamængder opvejes. Man er derfor ofte villig til at acceptere denne omkostning. I dette afsnit vil vi se på en række kompressionsbegreber og -metoder, som vi vil referere til i beskrivelsen af vores metode. Statisk og adaptiv kompression Ved statisk kompression anvendes en statisk model til at kode alt inddata. Ofte vil man udlede modellen ved at analysere det samlede inddata, men man kan også anvende en model, der er fastlagt på forhånd den pågældende model skal blot være kendt ved dekompression. Det er ofte muligt specielt ved statisk ordbogskompression at dekode vilkårlige delmængder af statisk kodet data. I modsætning hertil er adaptiv kompression, hvor modellen ændrer sig løbende mens data kodes. Dekompression af adaptivt kodet data, kræver at der dekomprimeres fra begyndelsen, da dekoderen skal kunne udlede, hvordan modellen har ændret sig. Ordbogskompression Ordbogskompression er en betegnelse for metoder, hvor en række symboler, et ord, kodes med et enkelt symbol. Datastrukturen, der indeholder ordene og de tilsvarende koder, kaldes en ordbog deraf navnet ordbogskompression. Ordbogskompression findes i både statiske og adaptive udgaver. Vi vil i de følgende to afsnit se på tre af de mest udbredte ordbogskompressionsmetoder. Side 13 af 169

14 2 BAGGRUNDSMATERIALE LZ77 og LZ78 Lempel og Ziv introducerede i slutningen af 70 erne LZ77 og LZ78 algoritmerne, der har været grundstenen i mange efterfølgende algoritmer (f.eks. LZW) og værktøjer (f. eks. gzip) [41, 42]. Begge algoritmer er ordbogsbaserede og adaptive. De benytter sig af at gemme bagudreferencer til strenge der tidligere er set i det originale dokument (enten som indeks eller som offset). I LZ77 gemmes f.eks. et vindue af det data der senest er læst. Når nye karakterer læses, finder kompressoren den længste fælles understreng (eng. substring) i vinduet, og skriver en bagudreference, hvis understrengen er set før. Betragt f.eks. følgende streng: 1 A B C D B C D E Figur 9: Streng med gentagelser Når det andet B læses, finder algoritmen at understrengen B C D findes i vinduet og erstatter den med en bagudreference af formen (-offset, længde): 1 A B C D ( -3,3) E Figur 10: Streng med bagudreference Desuden har LZ77 den vigtige egenskab, at periodiske sekvenser kan komprimeres meget effektivt. F. eks bliver 1 A B C D B C D B C D B C D E komprimeret til 1 A B C D ( -3,9) E Figur 11: Streng med periodisk sekvens Figur 12: Streng periodisk sekvens erstattet af bagudreference Huffman-kodning Huffman-kodning er en anden ordbogskompressionsmetode, der findes i såvel en statisk som en adaptiv variant. Vi vil her beskrive den statiske variant. Huffman-kodning er centralt i vores metode, og vi vil derfor gå i dybden med metoden. I modsætning til LZ77/78 metoderne, kodes hvert enkelt symbol i inddata med én kode ved Huffman-kodning. Kompression opnås ved at anvende korte koder for hyppigt forekommende symboler og længere koder til sjældnere symboler. Huffman konstruerede en grådig algoritme til beregning af disse såkaldte Huffman-koder [14]. Metoden opbygger et binært træ, hvor symbolerne udgør bladene. Sjældne symboler placeres dybt i træet og hyppigere symboler placeres tættere ved roden. Huffman-koden for et givet symbol findes herefter ved at følge kanterne fra roden til symbolet og tilføje et 0 eller 1 til koden hver gang en venstre- henholdsvis højrekant følges (eller omvendt). De vigtige egenskaber ved det opbyggede træ er: Side 14 af 169

15 2 BAGGRUNDSMATERIALE 1. at det resulterer i præfikskoder: ingen kode er et præfiks af en anden. Dette gør dekodning simpel, da man blot kan læse bits fra starten og utvetydigt kan afgøre hvornår en kode er læst. 2. at kodelængderne er optimale i følgende betydning: kodelængderne er optimale, i den forstand, at ingen anden direkte afbildning af inddatasymboler til unikke, binære strenge, kan producere et mindre uddata for et inddatasæt, hvor fordelingen af symbolerne er den samme som den, der blev brugt til konstruktion af træet [14] I det følgende vil vi bruge optimal i denne betydning. Kanoniske Huffman-koder Hvilket symbol, der kodes med hvilken kode er ikke væsentligt for kompressionsratioen, der alene bestemmes af kodelængderne. Vi kan således ombytte blade og knuder der har samme afstand til rodknuden, uden at kodernes præfiksegenskaber og længder ændres. Vi udnytter denne frihed til at konstruere kanoniske koder, der opfylder følgende to regler: 1. en kode H a, der er kortere end anden kode H b, skal have en mindre numerisk værdi: H a < H b. 2. for to symboler, a og b, hvis koder, H a og H b, har samme længde, skal der gælde at det symbol der kommer først i den alfabetiske ordning (her a), skal have en kode med en mindre numerisk værdi: H a < H b. Den alfabetiske ordning kan vælges vilkårligt, så længe dekompressoren kender denne ordning. Disse regler fastlægger entydigt koderne og dermed det binære træ for et givet alfabet og en given fordeling [9]. Det er muligt at fastlægge andre regler, der ligeledes entydigt fastlægger koderne, men de valgte regler har nogle egenskaber, som vi senere vil benytte. Der er i RFC 1951 [9, pp 7] angivet en algoritme, der givet at kodelængderne er kendt i lineær tid og plads i antallet af symboler, kan tildele koder ud fra ovenstående kanon 3 : Vi lader S n betegne sættet af symboler, der skal kodes med længden n. Symbolerne i hvert sæt nummereres fortløbende fra nul i alfabetisk rækkefølge. Vi lader kodelængden være første indeks og det fortløbende nummer være andet indeks det tredje symbol med længden fem betegnes således s 5,2. 3 Algoritmen er i RFC 1951 givet i form af pseudo-kode. Vi har valgt at bruge ovenstående fortolkning for at kunne indføre en kompakt notation. Side 15 af 169

16 2 BAGGRUNDSMATERIALE Det første symbol i hvert sæt tildeles koden H n,0, hvor den numeriske værdi af H n,0 er givet ved rekursionen H 0,0 = 0 og H n+1,0 = ( H n,0 + S n ) 2. De efterfølgende symboler i hvert sæt S n tildeles koder med fortløbende numeriske værdier: H n,i = H n,i for 0 < i < S n. De optimale kodelængder kan findes ved hjælp af Moffat og Katajainens algoritme, der beregner kodelængderne i lineær tid i antallet af symboler n og in-place med et konstant ekstra hukommelsesforbug [18]. Algoritmen forudsætter dog at symbolerne er sorteret efter frekvens. Da sortering mindst har en tidskompleksitet på O(n lg n), vil sorteringen asymptotisk dominere de to andre (lineære) trin og kompleksiteten for konstruktionen af de optimale koder er derfor O(n log n). Hukommelsesforbruget for konstruktionen af koderne er O(n). Genskabelse af kodebogen Ved statisk Huffman-kodning kodes alle symboler i en given besked med den samme kodebog. For at dekode beskeden, skal kodebogen være kendt og den skal derfor enten transmitteres sammen med beskeden eller være kendt på forhånd af modtageren. Sidstnævnte er en fordel, hvis alfabetet er kendt på forhånd og beskederne der udveksles har en kendt fordeling, da man sparer omkostningen ved at transmittere en kodebog med hver besked. Til vores brug er alfabetet dog ikke kendt på forhånd hvorfor vi er nødt til at konstruere og gemme en kodebog til hver besked. Vi vil i det følgende afsnit gennemgå en metode til dette. En af egenskaberne ved kanoniske Huffman-koder er, at det er ikke er nødvendigt at genskabe hver enkelt kode, for at kunne læse en kodet besked. Når man kender symbolerne, deres alfabetiske ordning samt længden af deres koder, kan sættene S n og koderne H n,0 konstrueres ved at bruge ovenstående definitioner. I det følgende vises det at dette er nok til at læse en kodet besked. Hvis hvert sæt S n repræsenteres ved en nul-indekseret tabel, vil positionen for et symbol s n,i S n i tabellen være i. Da symbolerne i S n har fået tildelt koder med numerisk fortløbende værdier, startende med H n,0, gælder endvidere i = H n,i H n,0. Hvis vi således har givet en kode H n,j, kan det tilsvarende symbol findes ved at bruge differensen H n,j H n,0 som indeks i S n. Men hvordan afgøres det hvad længden af det næste symbol er? Vi bemærker følgende egenskab: en kode H a, der er længere end en anden kode H b, vil have en numerisk værdi, der er mere end dobbelt så stor: H a > H b 2. Dette ses af den rekursion, der definerer den numerisk mindste kode for hver længde samt udtrykket for den numeriske værdi af koden for det sidste symbol i S n, H n, Sn 1 = H n,0 + S n 1: H n+1,0 = ( H n,0 + S n ) 2 H n+1,0 > ( H n,0 + S n 1) 2 = H n, Sn 1 2 Vi kan bruge denne egenskab til at finde længden af den næste kode som følger: Side 16 af 169

17 2 BAGGRUNDSMATERIALE 1. betegn de næste n bits, der endnu ikke er tolket, med H n. Initialiser i til den største kodelængde, n max. 2. hvis H i H i,0, så er kodelængden i of vi er færdige. 3. dekrementer i og gentag punkt 2. På grund af kodernes præfiksegenskab, kan sammenligningen i punkt 2, ændres til H n max H i,0 2 nmax i. Vi kan dermed undgå at skulle udregne H i ved hver iteration og værdierne H i,0 2 nmax i skal kun udregnes én gang for hver kodebog. 2.4 XML kompression De XML specifikke kompressorer vi er bekendt med er: XMill [20], XGrind [25], SCM [3] og Multiplexed Hierachical Modelling (MHM) [7], der er baseret på Prediction by Partial Match (PPM) de er alle resultater af forskningsprojekter og er beskrevet i videnskabelige artikler. Af kommercielle produkter er vi bekendt med XML-Xpress (XXP) [38] og dbxml. I dette afsnit introduceres kort de forskellige ikke-kommercielle projekter. XMill projektet er centralt for ideen til denne opgave og får derfor en mere fyldestgørende præsentation. XMill er en XML-specifik kompressor, designet af Liefke og Suciu. XMill kan kan komprimere store XML-dokumenter til under 20 % af deres originale størrelse. Den høje kompressionsratio opnås ved at adskille struktur fra data og behandle dem hver for sig. I strukturen erstattes alle XML-tags med heltal, hvorefter de komprimeres med gzip, der meget effektivt kan komprimere sådanne strukturer. Relateret data grupperes i containere (baseret på deres tag-navn) og så komprimeres hver container for sig, med en kompressor (evt. flere) der kan være specialiseret til den pågældende container. Brugen af specialiserede kompressorer i XMill er ikke automatiseret, men skal angives af brugeren. I de tilfælde hvor brugeren ikke angiver, hvorledes de enkelte containere skal komprimeres, anvender XMill zlib biblioteket, der kombinerer Ziv-Lempel kompression (LZ77) med en variant af Huffmankodning [9]. XMill projektet fokuserer på maksimal kompression af XML-dokumenter, for at minimere båndbredde behovet ved transmission og pladsforbruget på pladelagereret ved arkivering. XMill projektets løsning understøtter ikke navigation af den komprimerede struktur og dermed heller ikke forespørgsler direkte på det komprimerede dokument - for at udføre disse operationer er det nødvendigt at dekomprimere hele dokumentet. XGrind en XML-specifik kompressor, designet af Tolani og Haritsa. XGrind opnår ikke en kompressionsratio, der er er lige så god som XMill, men understøtter i modsætning til XMill visse forespørgsler direkte over det komprimerede dokument. XGrind bevarer strukturen fra det originale dokument, hvilket giver mulighed for at benytte almindelige XML teknologier til at afvikle forespørgsler på det komprimerede dokument. Dette betyder bl.a. at man kan indeksere filen. Tags og attributter kodes effektivt, og Side 17 af 169

18 2 BAGGRUNDSMATERIALE data komprimeres med en ikke-adaptiv Huffman kodning, der muliggør opslag. Strukturen udnyttes ikke som i XMill, til at kode forskellige datatyper sammen. SCM er en XML-specifik kompressor, designet af Adiego, Navarro og Fuente. SCM udnytter på samme måde som XMill strukturen til kode data under identiske tags sammen. I modsætning til XMill introducerer SCM dog en heuristik, der kan kombinere ordbøger for tags der har sammenfaldende fordeling, hvilket reducerer det samlede pladsforbrug væsentligt. SCM bevarer som XGrind strukturen fra det originale dokument. Kompression af både struktur og data sker med ordbaseret Huffman-kodning, hvor tags (incl <, > og />), betragtes som ord. Tags bruges til at afgøre hvilken ordbog der skal benyttes når der komprimeres og dekomprimeres. Da SCM benytter ordbaseret Huffman-kodning, understøttes visse forespørgsler direkte over det komprimerede dokument. SCM opnår en kompression der er bedre en XMill og - for store dokumenter - tilnærmelsesvis så god som MHM [3]. Multiplexed Hierachical Modelling (MHM) er en XML-specifik kompressor designet af Cheney. MHM er en statistisk kompressor, der benytter konteksten, givet af stien fra rodknuden til den aktuelle knude, til at bestemme sandsynligheden for den efterfølgende karakter. MHM er en adaptiv metode, hvorfor det ikke er muligt at foretage opslag i det komprimerede dokument. MHM opnår den bedste komprimering, af de XML-specifikke kompressorer vi har fundet (givet at XMill ikke af brugeren tweakes til det aktuelle dokument). Side 18 af 169

19 3 KOMPRIMERET OG NAVIGERBAR SERIALISERING AF XML 3 Komprimeret og navigerbar serialisering af XML De tidligere omtalte XML-kompressorer, er designet ud fra forskellige målsætninger: XMill er designet med henblik på arkivering og deres vigtigste mål har været at komprimere inddata mest muligt omend de også har et stort fokus på hastigheden af applikationen [20]. XGrind er designet med henblik på effektive forespørgsler (eng. queries) [25]. Vores motivation er en anden, nemlig at designe en komprimeret serialisering af XML, der kan bruges af XMLStore. XMLStore giver adgang til data via ovennævnte DVMgrænseflade, der præsenterer data til klienten som en træstruktur. Dvs. at det serialiserede format skal facilitere navigation i strukturen og helst uden at det forudsætter at hele dokumentet læses. Vi vil i det følgende afsnit konkretisere målsætningerne for metoden og formatet. 3.1 Designmål Vores designmål for det serialiserede format kan kort opsummeres i følgende to delmål: formatet skal være så kompakt som muligt formatet skal kunne navigeres uden forudgående deserialisering Disse målsætninger er desværre ikke altid forenelige. Et eksempel er bzip2, hvor en god kompressionsratio opnås ved at sortere data inden komprimering [24, 6]. Dette medfører dog, at man ikke kan læse en delmængde af data uden at dekomprimere hele den komprimerede blok og invertere sorteringen. Omkostningerne ved sådanne kompromiser kan være svære om ikke umulige at k- vantificere under udviklingen af en metode. Vi vil derfor ikke forsøge at udlede eksakte omkostninger i tid/plads, men derimod overordnet klarlægge naturen af sådanne kompromiser Begrænsninger Der er række relevante designparametre, som vi har måtte se bort fra for at begrænse omfanget af opgaven: Hukommelsesforbrug Vi vil i designet af metoden, ikke undersøge metoder til at sætte en øvre grænse for hukommelsesforbruget f.eks. ved opdeling og behandling af inddata i mindre blokke. Vi forudsætter således, at der er tilstrækkelig arbejdshukommelse til rådighed, til at hele inddata-dokumentet kan behandles samlet med vores metode. Opdateringer En anden begrænsning er, at vi ikke vil undersøge hvordan det serialiserede format kan opdateres og ikke forsøge at facilitere opdateringer i designet af metoden. Dette er en begrænsning ift. understøttelsen af DVM, hvori der er mulighed for at lade nogle knuder være opdaterbare de såkaldte mutable nodes. Side 19 af 169

20 3 KOMPRIMERET OG NAVIGERBAR SERIALISERING AF XML DTD og XMLSchema Et XML-dokument, der er i overensstemmelse med en DTD [11] eller et XML Schema [31], kan opfattes som en instans af den klasse af dokumenter som DTD en eller XML Schema et definerer. Der er en række muligheder for at udnytte dette til at komprimere dokumentet for eksempel udnytter XGrind DTD-information om attributter: hvis en attribut kun har et begrænset antal mulige værdier, nummereres disse og numrene bruges i det komprimerede format i stedet for de faktiske værdier [25]. Hvordan man kompakt kan beskrive en instans af en DTD eller et XML Schema er et interessant emne, men også et emne, der ligger langt ud over denne opgaves rammer. Vi vil således ikke udnytte DTD er og XML Schema er i vores metode Navigation Et af vores designmål er at kunne navigere uden forudgående deserialisering. Navigation er bredt begreb og vi er derfor nødt til at præcisere, i hvilken betydning vi anvender begrebet i denne opgave. DVM-modellen er en træmodel, hvor man, givet en knude, kan følge en vilkårlig kant til et af dens børn. I et serialiseret format kan alle børnene ikke komme lige efter forælderen og der skal derfor være en metode til at finde det pågældende barn. En mulighed er at placere børnene efter hinanden adskilt af markører og så scanne til det pågældende barn. Denne scanning kræver at de børn, der ikke skal bruges, alligevel skal indlæses, hvilket vil kræve forholdsvis langsomme diskoperationer. En anden mulighed er at efterligne træmodellen, ved at gemme kanterne som adresser i det serialiserede format. Dermed kan der søges direkte til det relevante barn. Pladelageret vil stadig skulle søge, men mellemliggende data skal ikke overføres og tolkes, så markører kan detekteres Round-tripping Begrebet round-tripping bruges i XML-litteratur til at beskrive den information, der bevares når et XML-dokument konverteres til et andet format og tilbage igen. Der findes flere round-tripping-niveauer: på højeste niveau bevares hele XML-dokumentet uden ændringer; på lavere niveauer mistes information, som f.eks. rækkefølgen af et elements børn eller kommentarer. Round-tripping-niveauet for vores metode skal mindst være det samme som det XLM- Store tilbyder. Endvidere vil det ikke have mening at have et højere round-tripping niveau, da den ekstra information ikke vil være tilgængelig via XMLStore. XMLStore round-tripping bevarer ikke følgende information 4 : [32] rækkefølgen af attributter kommentarer 4 XMLStore s round-tripping niveau, er undersøgt ved at studere kildekoden til Koala XMLStore Side 20 af 169

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grå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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2017 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 6. april, 2017 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grå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

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 7. juni 00, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grå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

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit.

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. XML (eng. extensible Markup Language) XML er en måde at strukturere data på i tekstform. På samme måde som

Læs mere

Prioritetskøer og hobe. Philip Bille

Prioritetskø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 mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. 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 mere

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig 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 mere

Lagervisning. Dina Friis, og Niels Boldt,

Lagervisning. Dina Friis, og Niels Boldt, Lagervisning Dina Friis, dina@diku.dk og Niels Boldt, boldt@diku.dk 6. april 2001 Kapitel 1 Sammenfatning Dette dokument er et eksempel på en delvis besvarelse af G-opgaven stillet på Datalogi 0 2000-2001.

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig 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 mere

DM507 Algoritmer og datastrukturer

DM507 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 mere

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Sortering. 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 mere

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig 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 mere

Sortering af information er en fundamental og central opgave.

Sortering 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 mere

Grundlæggende køretidsanalyse af algoritmer

Grundlæ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 mere

Danmarks Tekniske Universitet

Danmarks 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 mere

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Et 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 mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. 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 mere

Sortering af information er en fundamental og central opgave.

Sortering 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 mere

Danmarks Tekniske Universitet

Danmarks 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 mere

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 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 mere

Danmarks Tekniske Universitet

Danmarks 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 mere

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

Multimedier Modul 4 4.1:1. Huffman indkodning (statisk) Dynamisk Huffman-kodning er ikke pensum. Tekst: Lempel-Ziv og Lempel-Ziv-Welsh kodning

Multimedier Modul 4 4.1:1. Huffman indkodning (statisk) Dynamisk Huffman-kodning er ikke pensum. Tekst: Lempel-Ziv og Lempel-Ziv-Welsh kodning Multimedier Modul 4 4.1:1 KOMPRESSION Lidt kodningsteori (Entropi) Huffman indkodning (statisk) Dynamisk Huffman-kodning er ikke pensum. Aritmetisk indkodning Tekst: Lempel-Ziv og Lempel-Ziv-Welsh kodning

Læs mere

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer Philip Bille. Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX(): returner og fjern

Læs mere

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er en unik simpel vej mellem ethvert par af punkter i

Læs mere

Datastrukturer (recap)

Datastrukturer (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 mere

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125 Tietgenskolen - Nørrehus Data warehouse Database for udviklere Thor Harloff Lynggaard DM08125 Juni 2010 Indhold Beskrivelse... 3 Data warehouse... 3 Generelt... 3 Sammenligning... 3 Gode sider ved DW...

Læs mere

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer Philip Bille (priority-queues). Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX():

Læs mere

Danmarks Tekniske Universitet

Danmarks 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 mere

Danmarks Tekniske Universitet

Danmarks 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 mere

DM507 Algoritmer og datastrukturer

DM507 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 mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Må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 mere

Datastrukturer (recap)

Datastrukturer (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 mere

Danmarks Tekniske Universitet

Danmarks 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 mere

DM507 Algoritmer og datastrukturer

DM507 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 mere

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Må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 mere

22 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. 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 mere

Danmarks Tekniske Universitet

Danmarks 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 mere

DM13-1. Obligatorisk opgave E.05. Jacob Aae Mikkelsen

DM13-1. Obligatorisk opgave E.05. Jacob Aae Mikkelsen DM13-1. Obligatorisk opgave E.05 Jacob Aae Mikkelsen - 191076 26. september 2005 Indhold Analyse af problemstillingen........................ 2 Spørgsmål 1................................. 3 Spørgsmål

Læs mere

DM507 Algoritmer og datastrukturer

DM507 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 mere

Danmarks Tekniske Universitet

Danmarks 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 mere

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Datalogisk Institut Aarhus Universitet Fredag den 28. maj 2004, kl. 9.00 13.00 Opgave 1 (20%) En (r, k) kryds-graf er en orienteret graf

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Onsdag den. august 200, kl. 9.00.00 Opgave (25%) Lad A = A[] A[n] være et array af heltal. Længden af det længste

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 005, F0 side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 00. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

Danmarks Tekniske Universitet

Danmarks 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 mere

Danmarks Tekniske Universitet

Danmarks 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 mere

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser.

Basale 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 mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Periodiske kædebrøker eller talspektre en introduktion til programmet periodisktalspektrum

Periodiske kædebrøker eller talspektre en introduktion til programmet periodisktalspektrum Jørgen Erichsen Periodiske kædebrøker eller talspektre en introduktion til programmet periodisktalspektrum I artikelserien Studier på grundlag af programmet SKALAGENERATOREN kommer jeg bl.a. ind på begrebet

Læs mere

DM507 Algoritmer og datastrukturer

DM507 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 mere

Dynamisk programmering

Dynamisk 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 mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 005, F 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:

Læs mere

Udarbejdet af CFU Absalon

Udarbejdet af CFU Absalon Chatbots i Scratch Introduktion: En chatbot er et lille program, der kan chatte. De bruges mange steder på internettet, enten for at kunne hjælpe i nogle bestemte situationer eller for at underholde. De

Læs mere

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Hassansalem.dk/delpin User: admin Pass: admin BACKEND Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin

Læs mere

Kaminsky DNS exploit

Kaminsky DNS exploit Syddansk Universitet DM829 Kaminsky DNS exploit Jan Christensen - 241189 Anders Knudsen 150885 12. maj 2012 Indhold 1 Indledning 2 2 Introduktion til DNS 2 2.1 Cache............................... 3 2.2

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 0205, Forår 205 side af 5 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 205. Kursusnavn: Algoritmer og datastrukturer Kursusnummer: 0205 Hjælpemidler: Skriftlige hjælpemidler. Det

Læs mere

Komprimering Implementering, og test af lossless komprimering

Komprimering Implementering, og test af lossless komprimering Komprimering Implementering, og test af lossless komprimering Adam Hayeem frosch@ruc.dk, Torbjørn Nielsen torbjni@ruc.dk Morten Poulsen hartlev@ruc.dk, Jonas Hansen joha@ruc.dk og Mads Danquah danquah@ruc.dk

Læs mere

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Algoritmeanalyse. Ø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 mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DTOI, RUS UNIVERSITET Science and Technology ESEN lgoritmer og Datastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Fredag den. juni 0, kl. 9.00-.00

Læs mere

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008

Mm7: 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 mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 6 (seks) Eksamensdag: Fredag den 25. juni 200, kl. 9.00-.00

Læs mere

Guide til Umbraco CMS

Guide til Umbraco CMS web Guide til Umbraco CMS Indhold Indledning 3 Kompatible browsere 3 Log ind i Umbraco 4 Content-delen 5 Indholdstræet 5 Tilføjelse af en side/sektion 7 Sortering af indhold 12 Galleri 14 Mediebibliotek

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 06, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer

Læs mere

IDAP manual Emission

IDAP manual Emission IDAP manual Emission Dato: 08-06-2005 16:32:35 Indhold INDHOLD... 1 1 EMISSION... 2 1.1 KURVER... 2 1.2 RAPPORTER... 5 1.3 DATA REDIGERING... 6 1.3.1 Masse redigering... 7 1.3.2 Enkelt redigering... 10

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. Merging og Hashing Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. API for sekventiel tilgang (API =

Læs mere

TravelTales; håndtering af konfigurationsfil

TravelTales; håndtering af konfigurationsfil TravelTales; håndtering af konfigurationsfil 1 (7) TravelTales; håndtering af konfigurationsfil Synopsis Dette dokument beskriver indholdet i en TravelTales konfigurationsfil og metoder til hvordan man

Læs mere

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret Håndbog Til CPR services Bilag 8 GCTP-standard m.m. CPR-kontoret Datavej 20, Postboks 269, 3460 Birkerød E-post: cpr@cpr.dk. Telefax 45 82 51 10. Hjemmeside: www.cpr.dk Side 2 af 14 Indholdsfortegnelse

Læs mere

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

Intervalsø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 mere

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0 SmartFraming Et vindue til nationale sundhedssystemer Version 3.0 Infrastruktur i dagens sundheds IT Det sundhedsfaglige personale benytter sig i dag af en række forskellige systemer i forbindelse med

Læs mere

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN Indholdsfortegnelse Introduktion... 2 Definitioner... 2 Generelt... 3 Oprettelse af en skabelon... 4 Sidetypeskabeloner... 5 Globale displaymoduler...

Læs mere

Algoritmisk geometri

Algoritmisk 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 mere

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø EG Data Inform Byggebasen WCF og webservices Jens Karsø 10 Indholdsfortegnelse Byggebasen Services indledning... 2 Målsætning... 2 Valg af teknologier... 3 Kommunikationsmodel for byggebasen... 3 Services.byggebasen.dk...

Læs mere

Rolf Fagerberg. Forår 2012

Rolf 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 mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 26. maj 2009. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer

Læs mere

DKAL Snitflader REST Register

DKAL Snitflader REST Register DKAL Snitflader REST Register 1 Indholdsfortegnelse A2.1 INTRODUKTION 3 A2.1.1 HENVISNINGER 3 A2.1.2 LÆSEVEJLEDNING 4 A2.1.2.1 SÅDAN LÆSES EN REST GRAF 4 A2.1.2.2 SÅDAN LÆSES EN RESSOURCE OG EN TYPE 4

Læs mere

Rolf Fagerberg. Forår 2013

Rolf 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 mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning) INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 10. august 2012, kl. 9.00-11.00 Eksamenslokale: Finlandsgade

Læs mere

Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2

Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2 Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2 Encoding: Vi har tidligere set på spørgsmålet om et XML dokuments encoding. Det er generelt altid en god ide at gemme et dokument

Læs mere

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract Sproget Six Til brug i rapportopgaven på kurset Oversættere Vinter 2006 Abstract Six er baseret på det sprog, der vises i figur 6.2 og 6.4 i Basics of Compiler Design. Den herværende tekst beskriver basissproget

Læs mere

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database Kursusbeskrivelse Oprettelse af en Access-database Som eksempel på en Access-database oprettes en simpelt system til administration af kurser. Access-databasen skal indeholde: et instruktørkartotek et

Læs mere

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528) Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM58) Institut for Matematik & Datalogi Syddansk Universitet Torsdag den 7 Januar 010, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger,

Læs mere

Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober 2003. Jonas Christiansen Voss

Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober 2003. Jonas Christiansen Voss Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober 2003 Jonas Christiansen Voss 2. marts 2004 Indhold 1 CD ere 2 1.1 Brænde dokumenter til CD....................... 2 1.2 Disk Copy.................................

Læs mere

Køreplan Matematik 1 - FORÅR 2005

Køreplan Matematik 1 - FORÅR 2005 Lineær algebra modulo n og kryptologi Køreplan 01005 Matematik 1 - FORÅR 2005 1 Introduktion Kryptologi er en ældgammel disciplin, som går flere tusinde år tilbage i tiden. Idag omfatter disciplinen mange

Læs mere

Datastrukturer (recap) Datastruktur = data + operationer herpå

Datastrukturer (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 mere

Danmarks Tekniske Universitet

Danmarks 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 mere

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012

Algoritmer 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 mere

Erfaringer med CPR-replikering

Erfaringer med CPR-replikering Erfaringer med CPR-replikering Dette dokument beskriver en række overvejelser vi har gjort os i forbindelse med at vi har udviklet en Proof of Concept (PoC) af en CPR-replikeringstjeneste for KOMBIT. CPRs

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DTLOGI, RHUS UNIVERSITET Science and Technology EKSEN lgoritmer og Datastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): 11 (elleve) Eksamensdag: Torsdag den 1. juni 01,

Læs mere

Skriftlig Eksamen Algoritmer og Sandsynlighed (DM538)

Skriftlig Eksamen Algoritmer og Sandsynlighed (DM538) Skriftlig Eksamen Algoritmer og Sandsynlighed (DM538) Institut for Matematik og Datalogi Syddansk Universitet, Odense Fredag den 25. januar 2013 kl. 1013 Alle hjælpemidler (computer, lærebøger, notater,

Læs mere

Anvendelse af dobbelthistorik i GD2

Anvendelse af dobbelthistorik i GD2 Grunddataprogrammet under den Fællesoffentlige Digitaliseringsstrategi GD2 - Adresseprogrammet Anvendelse af dobbelthistorik i GD2 Implementerings regler og eksempler på dobbelthistorik MBBL- REF: Version:

Læs mere

Manual til opsætning af Jit-klient version 1.0. Opsætning. Copyright Jit-Danmark Aps 2006. Find mere information på www.jitbesked.

Manual til opsætning af Jit-klient version 1.0. Opsætning. Copyright Jit-Danmark Aps 2006. Find mere information på www.jitbesked. Opsætning Indholdsfortegnelse Sådan finder du indstillingerne...3 Muligheder og begrænsninger...6 Hvilke søgeord skal jeg bruge?...6 Ting man skal passe på...6 Tilføjning/nedlægning af søgeord...6 Ændring

Læs mere

Udgivelsen er beskyttet af Creative Commons license, Navngivning 2.5

Udgivelsen er beskyttet af Creative Commons license, Navngivning 2.5 OIOUBL Guideline OIOUBL UUID UBL 2.0 UUID G32 Version 1.1 Udgivelsen er beskyttet af Creative Commons license, Navngivning 2.5 OIOUBL UUID Version 1.1 Side 1 Kolofon Kontakt: IT- & Telestyrelsen E-mail:

Læs mere

Om at konvertere PDF - den gode, den dårlige og den forfærdelige metode

Om at konvertere PDF - den gode, den dårlige og den forfærdelige metode Dokumentation Om at konvertere PDF - den gode, den dårlige og den forfærdelige metode Forfatter Leonard Rosenthal PDF Standards Architect, Adobe Inc. Oversættelse Søren Frederiksen / Søren Winsløw DDPFF

Læs mere