Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer

Størrelse: px
Starte visningen fra side:

Download "Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer"

Transkript

1 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer Asger Bruun Datalogisk Institut, Københavns Universitet Universitetsparken 1, 2100 København Ø Resumé. Formålet med undersøgelsen er at afklare slægtsskab og performanceegenskaber mellem den binomiale og den svage kø. Undersøgelsen er gennemført ved at sammenligne testresultater efter ombytning af komponenter mellem de to typer af køer. Det viser sig, at den binomiale kø er effektiv forudsat den implementeres som oprindeligt beskrevet. Selvom den svage kø på mange måder optimerer den binomiale kø, viser undersøgelsen, at vi stadig har noget at hente i de gamle kilder. Tak Lektor Jyrki Katajainen takkes for inspiration og talrige frugtbare diskussioner. 1. Indledning Den fundamentale abstrakte datatype, der kaldes en prioritetskø, har været genstand for forbedringsforslag, lige siden dens fremkomst i 1964 [1]. Et kendt forslag herpå er Vuillemins binomiale kø fra 1978 [2]. Den binomiale kø er herefter blevet genfortalt i forskellige variationer [3]. Et nyere helt entydigt og grundigt beskrevet forslag er den svage kø [4]. Den binomiale og den svage kø er nært beslægtede, på den måde, at de begge lagrer deres elementer i en skovlignende struktur, af hobordnede træer, og ved at deres trætyper kan gøres indbyrdes kompatible. Måderne, hvorpå deres skove er strukturerede og håndteres, er dog helt forskellige. En fordel ved den svage kø fremfor den binomiale kø er at tidskompleksiteten for elementindsættelse i værste fald kun er konstant i stedet for logaritmisk. Forklaringen til dette resultat findes i den svage køs skov, men et spørgsmål er hvad denne optimering koster. Formålet med det følgende eksperiment er, indenfor CPH STL [7], at sammenligne effektiviteten mellem den binomiale og den svage kø. CPH STL rapport , februar 2010.

2 2 Asger Bruun 2. Træerne Vuillemin anvender det binomiale træ som konceptuel model for at forklare den binomiale prioritetskø, men foreslår samtidigt at implementere disse som binære træer hvor rodens venstre undertræ er et fuldt træ og hvor rodens højre undertræ er tomt. Et binært træs knudes venstre undertræ er dermed binomialt største barn og højre undertræ binomialt næste søskende. Figur 1. Vuillemins binomiale træ og dets implementering. Det binomiale træ understøtter to operationer: join samler to træer af ens størelse til et nyt træ af dobbelt størelse og construct løsner børnene fra en given knude og returnerer som resultat en liste med børnene i stigende højde. Et problem med den binære træstruktur er at der ikke gives nogen vej fra en knude til dens forælder, hvilket er nødvendigt hvis f.eks en knude ændrer værdi og derfor må ombyttes med dens forælder jævnfør hobbetingelsen, hvilket er en tredje standardoperation på træet betegnet promote. En almindelig løsning er at implementere et binomialt træ direkte, men dette indebærer at ofte flere end een forælderpeger må opdateres ifald barn og forælder bytter plads. Figur 2. Et binomialt træ fra lærebøgerne [3]. Den svage kø [4] anvender en alternativ træstruktur, der ikke har ovennævnte opdateringsproblem med et stigende antal forælderpegere. Det som det kan koste ekstra at finde den binomiale forælder 1 mere end opvejer det som det ville koste at opdatere forældrepegere. Det svage træ 2 understøtter join, men eftersom det svage træ opereres anderledes i den svage kø, gives i stedet for construct operationen split der deler et træ midt over i to lige 1 I termer af den svage kø kaldes den binomiale forælder for distinguished parent. 2 Et svagt træ er på engelsk betegnet a perfect weak heap.

3 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 3 store dele. De svage træer er tæt på at være de binære træer som Vuillemin foreslog som implementering (de er spejlvendte) og begge typer af træer kan bringes til at understøtte de fire grundlæggende operationer. Derfor kan den binomiale og den svage prioritetskø direkte bytte komponenter med hinanden i form af deres trætyper. Figur 3. Et svagt træ og et binomialt træ med identiske pegere. Selve operationen promote er relativt kompliceret at implementere og er også dyr at eksekvere. En mulighed for at gøre promote billigere, er at adskille knudens værdi og struktur fra hinanden med dobbelte lænker. Forudsat barn og binomial forælder på forhånd er kendte, da består operationen i en simpel ombytning af to par af pegere. Figur 4. Et svagt træ med indirekte knuder. 3. Skovene Træerne har en overskydende peger i deres rodknude, som kan bruges til at pege på hvad som helst med. Vuillemins skov er en liste af træer hvis rødder er direkte hægtede sammen via den overskydende peger og denne skov kan have nul eller eet træ af hver højde, som modsvarer skovens størrelse målt i antal af knuder og skrevet som et binært tal. Maskinkodeinstruktioner der kan manipulere sådanne bits 3 kan udnyttes på den måde at den eneste træhøjdeinformation der kræves er den som allerede er indeholdt i skovens binære repræsentation for dens størrelse. Vuillemin implementerer binær addition på størrelsestallene og træerne parallelt. Systemet er kompakt og 3 Intel: BSF (bit scan forward) og BSR (bit scan reverse).

4 4 Asger Bruun letvægtet. En ulempe er at andre typer information kan koste tid at finde, hvis vi f.eks har en rod og gerne vil kende dens højde, da er vi nødt til at skanne bits i skovens størrelse samtidig med at vi hopper fra træ til træ i skovens rodliste indtil pågældende rod er fundet. Et problem med det binære talsystem er at hvis man inkrementerer et binært tal bestående af lutter af et-taller, da vil menten propagere hele vejen op, f.eks = 10000, hvilket betyder at indsættelse af et enkelt element i Vuillemins skov kan koste logaritmisk tid i værste fald. Figur 5. Vuillemins binomiale kø og implementation. Den svage kø adresserer problemet i det binære talsystem ved at anvende et binært redundant talsystem, der tillader flere repræsentationer for et og samme tal. Eksempelvis kan det decimale tal 17 skrives binært redundant som enten 1201, 2001 eller Størrelsestallet er skrevet almindeligt binært i den svage kø og det binære redundante system ligger derimod implicit i at skovens antal af træer i enhver højde kan skrives binært redundant. Systemet fungerer på den måde at der altid først propageres det mindst betydende ciffer lig 2 før inkrementering og dette trin benytter en hjælpestak til hele tiden at holde rede på næste 2-tal, den såkalde join schedule. Det sikres derved dels at to nabocifre aldrig begge kan være 2, og dels at mindst betydende ciffer aldrig kan være 2 før en faktisk inkrementering. Resultatet er at maksimalt eet binært redundant 2-tal propageres per inkrementering, hvilket vil sige at indsættelse af eet elemenet i den svage skov kan udføres i konstant tid. Den svage kø er også optimeret for at et træs højde kan findes direkte fra dets rod med et enkelt opslag, idet træerne er hægtede indirekte

5 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 5 sammen via en højde liste og er nu senest blevet integreret med join schedule [6]. Den svage skovs metode for addition er ved i stigende højde at udtage træerne og pushe dem på en temporær stak indtil en af de to skove løber tør for træer. Dernæst poppes træerne fra stakken og indsættes i den skov, der stadig havde træer tilbage. Fordelen herved er at join schedule stadig er valid, men ulempen er en temporær stak. Figur 6. En svag kø. 4. Talsystemer Vuillemin kan kritiseres for sin måde at inkrementere en skovs størrelse på og det er oplagt at forsøge udvidde Vuillemins løsning med et talsystem med samme garantier som den svage skovs. Mit forslag er et lazy carry talsystem, kaldet sådan fordi, jeg tør ikke garantere at det 100 pct modsvarer den svage køs binære redundante. Systemet skal forstås således at menten altid kun propageres een position ad gangen og at den dovne eventuelt multiple mente altid er mindre end akkumulator. Hvis det redundante binære systems størrelse kan repræsenteres med to ord, w1 og w2, da kan det konverteres til det dovne mentesystem ved: accu = w1 OR w2, carry = w1 AND w2 og size = accu + carry. Operationerne er herefter trivielle: propagering: if (carry) { n = (1 << bit scan forward(carry)); carry -= n; accu -= n; n <<= 1; if((accu & 1)==0) accu = n; else carry = n; } inkrementering: if ((accu & 1)==0) ++accu; else ++carry; dekrementering: n = (1 << bit scan forward(accu OR carry)); if (n & carry) { carry -= n; accu +=n; }; --accu; addition: w1 = (accu + other.carry + other.accu); w2 = carry; accu = w1 OR w2; carry = w1 AND w2; Addition foretages som Vuillemins løsning og efterfølges eventuelt af reparation på join schedule, men rummer også et designvalg, idet man istedet

6 6 Asger Bruun kunne vælge at addere mod carry. Betydningen er at når man vælger addition mod accu, vil resultatet kunne have en mindre join schedule og havde man gjort omvendt kunne vi ende med end større join schedule og som skulle genopbygges. 5. Billigere pegerarrangementer Under en diskussion havde vi på Jyrkis tavle visket alle tredje pegere ud, fordi vi fik øje på at det var let at gøre. Den delte peger kunne gå til forældre om ingen børn og ellers til mindre søskende. Det samme kan gøres på et svagt træ og i dettes termer vil det sige at slette alle forælderpegere og lade alle bladknuder (dem hvor højre undertræ er tomt) pege deres venstre undertræ på distinguished parent. Imidlertid stod det snart klart at adgang fra blad til rod i dette arrangement kan koste op mod log 2 n, hvor n er antallet af elementer. Figur 7. En binomial kø med to pegere per knude. Det gode ved strukturen er at den var let at implementere 4 og at den gav en enkel måde at iterere mellem knuderne 5 : efterfølger er = hvis har børn da største barn, ellers binomiale forælders næste søskende. For denne naive to-peger struktur kan efterfølger på denne måde findes i konstant tid. Figur 8. Binomial kø, naturlig iterator. 4 Strukturen er i min kode navngivet binomial light 5 De hidtil implementerede svage træers iteratorer var komplicerede og benyttede sig af hjælpestrukturer.

7 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 7 Således inspireret har jeg læst på Browns [5] to-peger arrangementer. Hans mest simple eksempel er det tre-peger arrangement som vi også kan finde i lærebøger [3]. Men dernæst giver han følgende to mere overaskende to-peger strukturer (og som det viste sig at være en udfordring at implementere): Figur 9. Browns R- & K-strukturer. Det problem som Brown dermed løser er at Vuilllemins construct er nød til at ombytte rækkefølgen på de søskende, for at de kan være en del af en ordnet rodliste i stigende højde idet at med Browns to letvægtede strukturer er alt allerede iorden. Browns skitse giver ikke præcis forklaring på hvordan man tester for om en given knude er en rod og det koster tilsyneladende log n tid at besvare, fordi man skal søge om hvorvidt der kan findes en forælder eller ej. Et andet problem med Browns løsning er at han nu i hans K & R strukturer vil have os til at implementere bidirektionelle rodlister. Hvad angår Browns rodlistes bidirektionalitet, er det let at modificere hans forslag til noget unidirektionelt. En fordel herved at at det atter i konstant tid kan afgøres om vi har en rod. Ulempen er at rodlisten skal omkobles i hver eneste construct.

8 8 Asger Bruun Figur 10. Browns unidirektionelle R- & K-strukturer. Nærværende benchmarks er på det foreliggende baseret på Browns unidirektionelle R & K strukturer. 6. Implementering De oplagte komponentombytninger er, at afprøve de svage træer i den binomiale skov, at afprøve de binomiale træer i den svage skov, og at afprøve disse plus minus indirektion aht. promote. Arbejdet modsvarer og kan dele komponenter med den svage kø, som er en del af CPH STL og er betegnet priority-queue framework. De udarbejdede performancetests er viderudviklede versioner af dem der findes for den svage kø og dertil er skrevet yderligere tre tests. Arbejdet kan benchmarkes mod enhver implementation der kan realisere CPH STL s meldable priority queue. Koden er skrevet crossplatform i C++ med Microsoft Visual Studio 2008 / VC9 og GCC 4.3 på Ubuntu Linux. Et problem har været at måle tid præcist 6, det har medført et større antal moduler måttes skrives og disse er flyttet over i et underprojekt med navnet Benchmarking. Det at skrive et framework, der er fuldt ud kompatibelt med den svage køs, kræver opfyldelse af et større antal interfaces. Mit framework er på den måde følsomt overfor forandringer i det framework, som findes for den 6 Der har været problemer med voldsom støj i målingerne især på Windows og i mindre grad på Linux.

9 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 9 svage kø. For at håndtere sammenbrud er der sat beskyttende klasser ind foran, men trods dette, da findes tilfælde, hvor det har været nødvendigt at branche koden. Figur 11. De væsentligste forbindelsespunkter mellem de to frameworks. 7. Resultatet De første standard CPH STL weak-queue benchmarkkørsler på mit Microsoft Windows/MSC-miljø var utilfredstillende. Nøjagtigheden på de rapporterede performancetal kunne have mindre end et betydende ciffer og nogle gange kunne observeres endog negative kørselstider, dvs. at et givent eksperiment havde kostet minus x sekunder at udføre. Windows 7 er mindre tilregneligt at måle tid i end Linux på en lille f- lerkernet maskine. I en benchmarkkørsel kunne tallene vise at den svage kø var hurtigere end den binomiale, for så i næste kørsel at vise det modsatte. Undersøgelsesstrategien ændredes derfor successivt. Første rettelse var at fordele støjen jævnt mellem de enkelte tests ved at skifte mellem dem for hver eneste repetition af et givent eksperiment og at indbygge fuld dataopsamling for efterfølgende statistisk behandling. Når man derpå beregnede kvartilerne sås det at antallet af repetitioner var nød til at være meget stort for meget små størrelser af skove for at holde en ensartet måleusikkerhed. Valgte at bruge 2 (k/c) som antallet af elementer og omvendt proportionalt antallet af repetitioner, hvor konstant c = 1.. er antallet af intervaller mellem hver potens af 2. Et andet problem i at måle tid på små antal af elementer var at CPH STL s benchmarks havde anvendt den almindelige

10 10 Asger Bruun std::clock som rapporterer 0 for alt der tager mindre end 25 millisekunder 7 og derfor skulle koden rettes med lidt maskinkode der tæller clockcykler 8 hvilket er let muligt på nyere Intel hardware. Styresystemet var imidlertid stadig stærkt interfererende og måleusikkerheden blev først i orden efter koden fik tilføjet nogle systemkald til Windows, der låser målingen til en enkelt kerne og prioriterer dennes process højest muligt indenfor styresystemet. Målingerne var nu præcise og de måleusikkerheder, der kunne observeres i et givent eksperiment, kunne reproduceres. Støjen er bragt ned i et niveau der er lavere end den naturlige spredning der kan opstå ved at permutere testdata for hver eneste repetition. Derfor permuteres testdata nu, for at sikre mod heldige kombinationer af værdier. For alle benchmarks er gældende at antallet af elementer er ført på x- aksen og at omkostningen er ført på y-aksen. Såfremt man har andgang til nærværende dokument i farver kan det vejlede, at de tre mest grønne implementationer benytter den svage skovs indirekte struktur mellem træerne og at de øvrige farver betegner variationer på direkte rodlistede skove. (a) Push (b) Increase (c) Erase (d) Pop (e) Meld (f) Pop & Push (g) Clear (h) Stefan Figur 12. Oversigt. 7 Granulariteten på std::clock afhænger af hardware og operativsystem. 8 Intel: RDTSC (read time stamp counter).

11 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 11 Det er det samme sæt af implementationer, der er målt på i de efterfølgnende plots og implementationernes grafer er punkterede og farvekodede efter følgende skema:

12 12 Asger Bruun Figur 13. Push: antal clockcykler per operation, som funktion af antal elementer. Den direkte binære skov og den indirekte svage skov pusher lige hurtigt. Den dovne mente skov er lidt bagefter. De skove der har træer med indirekte værdi er tungere og performer som forventet ringest.

13 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 13 Figur 14. Increase: antal clockcykler per operation, som funktion af antal elementer. Den direkte binære skov med bionomiale tre-peger knuder og indirekte værdi er hurtigst. Dette er den fordel som træer med indirekte værdi kan forventes at have, men fordelen er relativ lille, omkring 20%. Browns R- og K-strukturer er uventet ringere end vores naive binomiale to-peger træ.

14 14 Asger Bruun Figur 15. Erase med extract(p): antal clockcykler per operation, som funktion af antal elementer. Direkte binær skov med eller uden langsom top er hurtigst. Direkte dovne mente skove kan følge med. Indirekte binære redundante skove yder mere konstant, men ringere.

15 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 15 Figur 16. Pop med extract(find-min()): antal clockcykler per operation, som funktion af antal elementer. Direkte binær skov med langsom top er hurtigst, men bemærkes må det at med hurtig top følger lige efter, til trods for at den hver gang må kalde findmin. Indirekte binære redundante skove yder mindre konstant og ringere.

16 16 Asger Bruun Figur 17. Meld: antal clockcykler per operation, som funktion af antal elementer. Direkte binære skove er hurtigst. Direkte dovne mente skove kan følge med, men peaks på den tunge join-schedule antyder et problem i dens implementering. Indirekte binære redundante skove yder ringere og lidt mindre konstant.

17 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 17 Figur 18. Pop & Push: antal clockcykler per operation, som funktion af antal elementer. De forventede peaks i direkte binære skove af størrelser på potenser af to kan observeres. Det ses også at den direkte dovne mente skov performer mere konstant end den binære. Imidlertid performer indirekte binære redundante skove ringere og endnu mindre konstant.

18 18 Asger Bruun Figur 19. Clear med extract(): antal clockcykler per operation, som funktion af antal elementer. Direkte binær skov med eller uden langsom top er hurtigst. Direkte dovne mente skove kan følge med. Indirekte binære redundante skove yder mindre konstant og ringere.

19 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 19 Figur 20. Stefans benchmark: antal clockcykler per operation, som funktion af antal elementer. Direkte binær skov med eller uden langsom top er hurtigst. Direkte dovne mente skove kan følge med. Indirekte binære redundante skove yder ringere. Stefan Edelkamps test [8] er en enkel benchmark der beskriver et typisk mix af operationerne ved dagligdags anvendelse af en prioritetskø med antallet af dataelementer lig max N.

20 20 Asger Bruun Pseudo: N x insert() N x increase() N/2 x extract(p) N/2 x pop() 8. Diskussion Det er overraskende at måtte observere den gamle direkte binære skov eksekvere hurtigere end den indirekte mere moderne binært redundante skov i adskillige sammenligninger. Inklusionen af en direkte skov med doven mente viser at forskellen ikke kan tilskrives talsystemet. Det kan se ud til at årsagen kan findes i den indirekte binært redundante skovs ekstra allokationer og h- vor, i alle kørte tests, de to øvrige skovtypers allokeringer er konstante og ofte nul. (a) Erase (b) Pop (c) Meld (d) Pop & Push (e) Clear (f) Stefan Figur 21. Allokerede bytes per operation. Angående svaret på Vuillemins problem med menten, der worst case propagerer hele vejen igennem, har det været nødvendigt at foretage en check måling, hvor bl.a. indirekte binært redundante skove er skåret fra, fordi de var for langsomme.

21 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 21 Figur 22. Pop & Push: antal clockcykler og compares per operation, som funktion af antal elementer. Den tydeligste effekt er at den direkte binære skov derved får en dyr findmin, som til et vist mål afspejles i testens eksekveringstid og at det dovne mente talsystem er mere stabilt, end det enkle binære, imod denne værste situation. 9. Konklusion Indirekte systemer kan optimere udvalgte fordele. Træer med indirekte værdier er hurtige ifald promote eksekveres mere end noget andet. Ligeledes er indirekte skove velegnede ifald push og increase er prioriterede operationer. I øvrige hermed målte tilfælde, da er de direkte strukturer hurtigere. Nærværende rapport har afsløret problemer, der fremover kræver nærmere analyse. Litteratur [1] Floyd, Kaupe, Williams. Algorithms 113, 143, 144, 232 & 245. Communications of the ACM ( ). [2] Jean Vuillemin. A data structure for manipulating priority queues. Communications of the ACM 21 (1978), [3] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction to Algorithms, 2nd Edition, The MIT Press (2001).

22 22 Asger Bruun [4] Amr Elmasry, Claus Jensen, and Jyrki Katajainen. Relaxed weak queues: An alternative to run-relaxed heaps. CPH STL rapport , Datalogisk Institut, Københavns Universitet (2005). [5] M. R. Brown. Implementation and analysis of binomial queue algorithms. SIAM J. Computing 7(3) (1978), [6] Stefan Edelkamp, Jyrki Katajainen, Jens Rasmussen. Generic-programming framework for benchmarking weak queues and their relatives (2009). [7] The Copenhagen Standard Template Library, ( ). [8] Stefan Edelkamp, Møde den 5. januar om prioritetskøer på Datalogisk Institut, Københavns Universitet (2010).

23 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer 23 Bilag A.1 benchmarking.hpp Bilag A. Code 1 #ifndef CPHSTL BENCHMARKING HPP 2 #define CPHSTL BENCHMARKING HPP 3 / 4 Desc : Repeated measurements o f r e s o u r c e consumption. 5 An attempt to s i m p l i f y measurements and to improve 6 accuracy in time, i n c l u d e s some b a s i c s t a t i s t i c s. 7 8 Auth : Asger Bruun Impl : t i m e c o u n t e r - counts system time t i c k s. 11 compare counter - counts compares. 12 a l l o c c o u n t e r - counts a l l o c a t i o n s. 13 s t o p w a t c h - t i m e c o u n t e r c o n v e r t e d to seconds. 14 combi counter - t h e above c o u n t e r s combined counting compare - wrapper, makes your comparator count. 17 c o u n t i n g a l l o c a t o r - counting a l l o c a t o r replacement c p u a t t e n t i o n - g e t optimal system p r i o r i t y f o r timing. 20 / #include a s s e r t. h++ 23 #include m s c f i x. hpp #include b e n c h m a r k s t a t i s t i c s. hpp 26 #include benchmark compare counter. hpp 27 #include b e n c h m a r k a l l o c c o u n t e r. hpp 28 #include benchmark time counter. hpp 29 #include b e n c h m a r k f a s t e r c l o c k p o l i c y. hpp 30 #include b e n c h m a r k t s c c l o c k p o l i c y. hpp 31 #include benchmark cpu attention. hpp 32 #include benchmark combi counter. hpp #endif Bilag A.2 binary number system.hpp 1 #ifndef CPHSTL BINARY NUMBER SYSTEM H 2 #define CPHSTL BINARY NUMBER SYSTEM H 3 4 / 5 Desc : Vuillemin s t y l e bina ry number system. 6 Auth : Asger Bruun Ref : Jean Vuillemin. A data s t r u c t u r e f o r manipulating p r i o r i t y queues. 8 : Communications o f t h e ACM 21 ( 1978), / namespace c p h s t l { template<typename C, typename E> 14 // where E and C have t h e same t y p e o f comparator and v a l u e. 15 class binary number : public E : : r o o t l i s t t y p e { 16 public : typedef typename E : : comparator type comparator type ; 19 typedef typename E : : r o o t l i s t t y p e r o o t l i s t t y p e ; 20 typedef typename r o o t l i s t t y p e : : b a c k i n s e r t e r b a c k i n s e r t e r ; 21 typedef typename E : : s i z e t y p e s i z e t y p e ; 22 typedef typename E : : p o i n t e r p o i n t e r ;

24 24 Asger Bruun // would l i k e p r o t e c t e d : class b i t s c a n n e r { 27 s i z e t y p e c u r r e n t, b i t s l e f t ; public : b i t s c a n n e r ( s i z e t y p e const& d ) : b i t s l e f t ( d ) { 32 i f ( b i t s l e f t ==0) c u r r e n t = 0 ; 33 else { 34 c u r r e n t = 1 ; 35 n e x t b i t ( ) ; 36 } 37 } s i z e t y p e c u r r e n t ( ) { return c u r r e n t ; } void n e x t b i t ( ) { 42 a s s e r t ( c u r r e n t!=0) ; 43 while ( true ) { 44 i f ( ( ( this ). b i t s l e f t & 1)!=0) { - - ( this ). b i t s l e f t ; break ; } 45 else i f ( ( this ). b i t s l e f t ==0) { c u r r e n t =0; break ; } 46 else { ( this ). b i t s l e f t >>= 1 ; c u r r e n t <<= 1 ; } 47 } 48 } private : friend std : : ostream & operator << 53 ( std : : ostream & os, b i t s c a n n e r const& bs ) 54 { 55 b i t s c a n n e r tmp( bs ) ; 56 while (tmp. c u r r e n t ( ) ) { 57 os << tmp. c u r r e n t ( ) << ; tmp. n e x t b i t ( ) ; 58 } 59 return os ; 60 } 61 } ; public : enum { number system = 2 } ; typedef binary number<c, E> f a s t n u m b e r t y p e ; 68 typedef typename f a s t n u m b e r t y p e : : b i t s c a n n e r f a s t b i t s c a n n e r ; binary number ( r o o t l i s t t y p e l i s t, s i z e t y p e s i z e ) 71 : r o o t l i s t t y p e ( l i s t ), accu ( s i z e ) { a s s e r t ( i s v a l i d ( ) ) ; } bool i s v a l i d ( ) / const / { return r o o t l i s t t y p e : : i s v a l i d ( accu ) ; } s i z e t y p e s i z e ( ) const { return accu ; } 76 s i z e t y p e max size ( ) const { 77 // Note : I t i s c l e a r to t h e LWG t h a t t h e v a l u e r eturned by 78 // max size ( ) can t change from c a l l to c a l l. 79 // Ref : www. open - s t d. org / j t c 1 / sc22 /wg21/ docs / lwg - c l o s e d. html# return std : : n u m e r i c l i m i t s <s i z e t y p e >::max ( ) / E : : f o o t p r i n t ( ) ; 81 } void swap ( binary number<c, E> & h2 ) { 84 a s s e r t ( ( this ). i s v a l i d ( ) ) ; a s s e r t ( h2. i s v a l i d ( ) ) ;

25 Effektivitetsmåling på krydsninger af svage og binomiale prioritetskøer r o o t l i s t t y p e : : swap ( h2 ) ; 86 std : : swap ( accu, h2. accu ) ; 87 } // f r i e n d s t r u c t j s p o l i c y ; // i s t h i s v a l i d gcc??? 90 // f o l l o w i n g : temporarely made p u b l i c because o f problem with f r i e n d. 91 s i z e t y p e accu ; protected : s t a t i c comparator type comparator ; 96 s t a t i c const bool t r a c e=f a l s e ; private : // adder 101 s t a t i c void a c c e p t c a r r y ( b a c k i n s e r t e r & nxt, p o i n t e r& c ) { 102 nxt. add ( c ) ; c = 0 ; 103 } 104 s t a t i c void a c c e p t r e s ( b a c k i n s e r t e r & nxt, r o o t l i s t t y p e& l ) { 105 nxt. add ( l. s k i p ( ) ) ; 106 } 107 s t a t i c void p r o p c a r r y ( p o i n t e r& c, r o o t l i s t t y p e& l ) { 108 c = ( l. e j e c t ( ) ). j o i n ( c, comparator ) ; 109 } 110 s t a t i c void p r o p c a r r y 2 ( p o i n t e r& c, r o o t l i s t t y p e& l ) { 111 c = ( c ). j o i n ( l. e j e c t ( ), comparator ) ; 112 } 113 s t a t i c void c o n s t r u c t c a r r y ( p o i n t e r& c, r o o t l i s t t y p e& l1, r o o t l i s t t y p e& l 2 ) { 114 c = ( l 1. e j e c t ( ) ). j o i n ( l 2. e j e c t ( ), comparator ) ; 115 } protected : s i z e t y p e remove root ( p o i n t e r r ) { 120 // Desc : remove r o o t from r o o t l i s t and r e t u r n i t s s i z e. 121 // Todo : e i t h e r implement t h e b i d i r e c t i o n a l r o o t l i s t so t h a t 122 // : we can remove a r o o t in c o n s t a n t time or 123 // : implement r e m o v e a f t e r ( p r e v i o u s r o o t ). 124 a s s e r t ( ( r ). i s r o o t ( ) ) ; 125 p o i n t e r y ( ( this ). begin ( ) ), z ( ( this ). end ( ) ) ; 126 b i t s c a n n e r bs ( ( this ). accu ) ; 127 while ( y!= r ) { 128 bs. n e x t b i t ( ) ; z=y ; y=n e x t g e t ( y ) ; 129 } 130 s i z e t y p e d e l t a ( bs. c u r r e n t ( ) ) ; 131 r o o t l i s t t y p e : : r e m o v e a f t e r ( z ) ; 132 ( this ). accu -= d e l t a ; 133 return d e l t a ; 134 } void add ( binary number& b ) { 137 // T(n,m) = O( min ( l g m, l g n) ). 138 i f ( t r a c e ) std : : cout << add ( << b << ) - ; 139 a s s e r t ( ( this ). i s v a l i d ( ) ) ; a s s e r t ( b. i s v a l i d ( ) ) ; 140 r o o t l i s t t y p e & r1 ( this ), & r2 ( b ) ; 141 s i z e t y p e n1 ( ( this ). accu ), n2 ( b. accu ) ; 142 p o i n t e r c ( 0 ) ; 143 r o o t l i s t t y p e r e s ; 144 b a c k i n s e r t e r nxt ( r e s ) ; 145 while ( ( n1!= 0 && n2!= 0) ( c!= 0) ) { 146 switch ( ( c ==0?0:4) + ( ( n2 & 1) << 1) + ( n1 & 1) ) { 147 case 0 / 000 / : / output d i g i t zero / ; break ;

26 26 Asger Bruun 148 case 1 / 001 / : a c c e p t r e s ( nxt, r1 ) ; break ; 149 case 2 / 010 / : a c c e p t r e s ( nxt, r2 ) ; break ; 150 case 3 / 011 / : c o n s t r u c t c a r r y ( c, r1, r2 ) ; break ; 151 case 4 / 100 / : a c c e p t c a r r y ( nxt, c ) ; break ; 152 case 5 / 101 / : p r o p c a r r y ( c, r1 ) ; break ; 153 case 6 / 110 / : p r o p c a r r y 2 ( c, r2 ) ; break ; 154 case 7 / 111 / : a c c e p t r e s ( nxt, r1 ) ; p r o p c a r r y ( c, r2 ) ; break ; 155 default : a s s e r t ( 0 ) ; break ; 156 } 157 n1 >>= 1 ; n2 >>= 1 ; 158 } 159 i f ( n1!= 0) { 160 a s s e r t ( n2 == 0) ; a s s e r t ( r2. is empty ( ) ) ; 161 a c c e p t r e s ( nxt, r1 ) ; 162 r1. c l e a r ( ) ; 163 } else i f ( n2!= 0) { 164 a s s e r t ( r1. is empty ( ) ) ; 165 a c c e p t r e s ( nxt, r2 ) ; 166 r2. c l e a r ( ) ; 167 } else { 168 a s s e r t ( r1. is empty ( ) ) ; 169 a s s e r t ( r2. is empty ( ) ) ; 170 } 171 ( this ). accu += b. accu ; 172 b. accu = 0 ; 173 r1. swap ( r e s ) ; i f ( t r a c e ) std : : cout << ->( << ( this ) << ) \n ; 176 a s s e r t ( ( this ). i s v a l i d ( ) ) ; a s s e r t ( b. i s v a l i d ( ) ) ; 177 } void increment ( p o i n t e r p ) { 180 // Opti : only every second c o n t i g u o u s i n s e r t does meld. 181 a s s e r t ( i s v a l i d ( ) ) ; 182 i f ( t r a c e ) std : : cout << increment ( << ( p ). element ( ) << ) - ; 183 a s s e r t ( p!= 0) ; a s s e r t ( ( p ). h e i g h t ( ) == 0) ; 184 a s s e r t ( ( p ). i s r o o t ( ) ) ; 185 i f ( ( ( this ). accu & 1)==0) { 186 i n j e c t ( p ) ; accu ; 188 } else { 189 binary number hs ( p, 1) ; 190 add ( hs ) ; 191 } 192 i f ( t r a c e ) std : : cout << ->( << ( this ) << ) \n ; 193 } p o i n t e r decrement ( ) { 196 // Opti : Meld i s never needed because t h e t r e e e x t r a c t e d 197 // i s always t h e l e a s t s i g n i f i c a n t d i g i t. 198 a s s e r t ( ( this ). i s v a l i d ( ) ) ; 199 i f ( t r a c e ) std : : cout << decrement ( ) - ; 200 a s s e r t (! ( this ). is empty ( ) ) ; 201 p o i n t e r p ( r o o t l i s t t y p e : : e j e c t ( ) ) ; 202 p o i n t e r t ( ( p ). m o s t s i g n i f i c a n t c h i l d ( ) ) ; 203 i f ( t!= 0) { //! ( p ). i s l e a f ( ) 204 s i z e t y p e n ; 205 p o i n t e r r ( ( p ). c o n s t r u c t ( n, constant <bool, false >() ) ) ; 206 i n j e c t r a n g e ( r, t ) ; 207 } accu ; 209 a s s e r t ( i s v a l i d ( ) ) ; 210 a s s e r t ( ( p ). i s r o o t ( ) ) ; 211 a s s e r t ( ( p ). h e i g h t ( ) == 0) ;

Tuning af CPH STLs komponentstrukturer for smeltbare prioritetskøer

Tuning af CPH STLs komponentstrukturer for smeltbare prioritetskøer Speciale for kandidatgrad i datalogi Tuning af CPH STLs komponentstrukturer for smeltbare prioritetskøer Asger Bruun Datalogisk Institut, Københavns Universitet Universitetsparken 1, 21 København Ø bruun@diku.dk

Læs mere

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension DK - Quick Text Translation HEYYER Net Promoter System Magento extension Version 1.0 15-11-2013 HEYYER / Email Templates Invitation Email Template Invitation Email English Dansk Title Invitation Email

Læs mere

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek Specialeforsvar: Fundamentet for et fleksibelt container bibliotek Foundations of an adaptable container library Bo Simonsen Datalogisk Institut, Københavns Universitet Denne præsentation, afhandlingen,

Læs mere

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen.  og 052431_EngelskD 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau D www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation

Læs mere

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen Side 1 af 7 Eksamenstermin: DECEMBER 2003 / JANUAR 2004 Varighed: 4 timer - fra kl. 9.00 til kl. 13.00 Ingeniørhøjskolen udleverer: 3 omslag samt papir

Læs mere

A Comparative Analysis of Three Different Priority Deques af: Søren Skov & Jesper Holm Olsen

A Comparative Analysis of Three Different Priority Deques af: Søren Skov & Jesper Holm Olsen A Comparative Analysis of Three Different Priority Deques af: Søren Skov & Jesper Holm Olsen Agenda: Hvad er en Priority Deque? Hvad kan det bruges til? De tre datastrukturer: MinMax-heap The Deap (påpeget

Læs mere

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September 2005. Casebaseret eksamen. www.jysk.dk og www.jysk.com.

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September 2005. Casebaseret eksamen. www.jysk.dk og www.jysk.com. 052430_EngelskC 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau C www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation

Læs mere

Kursusarbejde 2 Grundlæggende Programmering

Kursusarbejde 2 Grundlæggende Programmering Kursusarbejde 2 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 31. oktober 2003 Indhold 1. Kode 2 1.1. hotel.h.................................................... 2 1.2. hotel.cc...................................................

Læs mere

Boost Concept Check Library

Boost Concept Check Library Boost Concept Check Library Kasper Egdø and Konstantin Barkaia Department of Computer Science University of Copenhagen Boost Concept Check Library p.1/19 Eksempel #include #include int

Læs mere

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE

Læs mere

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................

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

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen The X Factor Målgruppe 7-10 klasse & ungdomsuddannelser Engelskundervisningen Læringsmål Eleven kan give sammenhængende fremstillinger på basis af indhentede informationer Eleven har viden om at søge og

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

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

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

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

Aktivering af Survey funktionalitet

Aktivering af Survey funktionalitet Surveys i REDCap REDCap gør det muligt at eksponere ét eller flere instrumenter som et survey (spørgeskema) som derefter kan udfyldes direkte af patienten eller forsøgspersonen over internettet. Dette

Læs mere

Introduktion til datastrukturer. Philip Bille

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

Introduktion til datastrukturer

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

Status på det trådløse netværk

Status på det trådløse netværk Status på det trådløse netværk Der er stadig problemer med det trådløse netværk, se status her: http://driftstatus.sdu.dk/?f=&antal=200&driftid=1671#1671 IT-service arbejder stadig med at løse problemerne

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

SOFTWARE PROCESSES. Dorte, Ida, Janne, Nikolaj, Alexander og Erla

SOFTWARE PROCESSES. Dorte, Ida, Janne, Nikolaj, Alexander og Erla SOFTWARE PROCESSES Dorte, Ida, Janne, Nikolaj, Alexander og Erla Hvad er en software proces? Et struktureret sæt af AKTIVITETER, hvis mål er udvikling af software. En software proces model er en abstrakt

Læs mere

A Profile for Safety Critical Java

A Profile for Safety Critical Java A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren

Læs mere

how to save excel as pdf

how to save excel as pdf 1 how to save excel as pdf This guide will show you how to save your Excel workbook as PDF files. Before you do so, you may want to copy several sheets from several documents into one document. To do so,

Læs mere

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. På dansk/in Danish: Aarhus d. 10. januar 2013/ the 10 th of January 2013 Kære alle Chefer i MUS-regi! Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. Og

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

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute Sortering fra A-Z Henrik Dorf Chefkonsulent SAS Institute Hvorfor ikke sortering fra A-Å? Det er for svært Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å?

Læs mere

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes.

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes. Brug sømbrættet til at lave sjove figurer. Lav f: Et dannebrogsflag Et hus med tag, vinduer og dør En fugl En bil En blomst Få de andre til at gætte, hvad du har lavet. Use the nail board to make funn

Læs mere

Design til digitale kommunikationsplatforme-f2013

Design til digitale kommunikationsplatforme-f2013 E-travellbook Design til digitale kommunikationsplatforme-f2013 ITU 22.05.2013 Dreamers Lana Grunwald - svetlana.grunwald@gmail.com Iya Murash-Millo - iyam@itu.dk Hiwa Mansurbeg - hiwm@itu.dk Jørgen K.

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

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

Læs mere

Da beskrivelserne i danzig Profile Specification ikke er fuldt færdige, foreslås:

Da beskrivelserne i danzig Profile Specification ikke er fuldt færdige, foreslås: NOTAT 6. juni 2007 J.nr.: 331-3 LEA Bilag A danzig-møde 15.6.2007 Opdatering af DAN-1 og danzig Profile Specification Forslag til opdatering af Z39.50 specifikationerne efter udgivelse af Praksisregler

Læs mere

Hvor er mine runde hjørner?

Hvor er mine runde hjørner? Hvor er mine runde hjørner? Ofte møder vi fortvivlelse blandt kunder, når de ser deres nye flotte site i deres browser og indser, at det ser anderledes ud, i forhold til det design, de godkendte i starten

Læs mere

Hvordan vælger jeg dokumentprofilen?

Hvordan vælger jeg dokumentprofilen? Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel

Læs mere

Processer og tråde. dopsys 1

Processer og tråde. dopsys 1 Processer og tråde dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne) hhv. små systemer: Multiprogrammering og time-sharing (fra 60 erne og frem): dopsys

Læs mere

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter

Læs mere

Skriftlig eksamen i Datalogi

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

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer BRP 13.9.2006 Tal. Om computer-repræsentation og -manipulation. Logaritmer 1. Opgaverne til i dag dækker det meste af stoffet 2. Resten af stoffet logaritmer binære træer 3. Øvelse ny programmeringsopgave

Læs mere

Nyhedsmail, december 2013 (scroll down for English version)

Nyhedsmail, december 2013 (scroll down for English version) Nyhedsmail, december 2013 (scroll down for English version) Kære Omdeler Julen venter rundt om hjørnet. Og netop julen er årsagen til, at NORDJYSKE Distributions mange omdelere har ekstra travlt med at

Læs mere

To the reader: Information regarding this document

To the reader: Information regarding this document To the reader: Information regarding this document All text to be shown to respondents in this study is going to be in Danish. The Danish version of the text (the one, respondents are going to see) appears

Læs mere

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup SEPA Direct Debit Mandat Vejledning 2013.03.15 Nets Lautrupbjerg 10 DK-2750 Ballerup Indholdsfortegnelse 1. Indledning... 3 1.1 Tilknyttet dokumentation... 3 1.2 Kontakt til Nets... 3 2. Krav til SEPA

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

Help / Hjælp

Help / Hjælp Home page Lisa & Petur www.lisapetur.dk Help / Hjælp Help / Hjælp General The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. The Association

Læs mere

QUICK START Updated: 18. Febr. 2014

QUICK START Updated: 18. Febr. 2014 QUICK START Updated: 18. Febr. 2014 For at komme hurtigt og godt igang med dine nye Webstech produkter, anbefales at du downloader den senest opdaterede QuickStart fra vores hjemmeside: In order to get

Læs mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0 Userguide NN Markedsdata for Microsoft Dynamics CRM 2011 v. 1.0 NN Markedsdata www. Introduction Navne & Numre Web Services for Microsoft Dynamics CRM hereafter termed NN-DynCRM enable integration to Microsoft

Læs mere

RentCalC V2.0. 2012 Soft-Solutions

RentCalC V2.0. 2012 Soft-Solutions Udlejnings software Vores udvikling er ikke stoppet!! by Soft-Solutions RentCalC, som er danmarks ubetinget bedste udlejnings software, kan hjælpe dig med på en hurtigt og simple måde, at holde styr på

Læs mere

GUIDE TIL BREVSKRIVNING

GUIDE TIL BREVSKRIVNING GUIDE TIL BREVSKRIVNING APPELBREVE Formålet med at skrive et appelbrev er at få modtageren til at overholde menneskerettighederne. Det er en god idé at lægge vægt på modtagerens forpligtelser over for

Læs mere

Kursusarbejde 4 Grundlæggende Programmering

Kursusarbejde 4 Grundlæggende Programmering Kursusarbejde 4 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 19. december 2003 Indhold 1. Kode 2 1.1. Header-filer................................................. 2 1.1.1. Queue.h...............................................

Læs mere

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet. ATEX direktivet Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.dk tlf: 7220 2693 Vedligeholdelse af Certifikater / tekniske dossier / overensstemmelseserklæringen.

Læs mere

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005 - 1. Obligatorisk opgave F.06 System Call Jacob Aae Mikkelsen - 191076 Ingen andre gruppe medlemmer 6. marts 2005 1 Indhold 1 Opgave beskrivelse 2 2 Analyse 2 2.1 Hukommelses allokering.....................

Læs mere

www.cfufilmogtv.dk Tema: Pets Fag: Engelsk Målgruppe: 4. klasse Titel: Me and my pet Vejledning Lærer

www.cfufilmogtv.dk Tema: Pets Fag: Engelsk Målgruppe: 4. klasse Titel: Me and my pet Vejledning Lærer Me and my pet My dogs SVTV2, 2011, 5 min. Tekstet på engelsk Me and my pet er en svenskproduceret undervisningsserie til engelsk for børn i 4. klasse, som foregår på engelsk, i engelsktalende lande og

Læs mere

Start på Arduino og programmering

Start på Arduino og programmering Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget

Læs mere

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api Specifikation Abstrakt, objektorienteret operativsystem-api Indhold 1 Indledning... 3 1.1 Introduktion... 3 1.2 Formål... 3 1.3 Overordnede krav... 3 2 Ressourcer i OS-API et... 4 2.1 Tråde... 4 2.2 Timere...

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig 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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2015 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 3. marts, 2015 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Læs venligst Beboer information om projekt vandskade - sikring i 2015/2016

Læs venligst Beboer information om projekt vandskade - sikring i 2015/2016 Læs venligst Beboer information om projekt vandskade - sikring i 2015/2016 Vi er nødsaget til at få adgang til din lejlighed!! Hvis Kridahl (VVS firma) har bedt om adgang til din/jeres lejlighed og nøgler,

Læs mere

Unitel EDI MT940 June 2010. Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004)

Unitel EDI MT940 June 2010. Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004) Unitel EDI MT940 June 2010 Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004) Contents 1. Introduction...3 2. General...3 3. Description of the MT940 message...3 3.1.

Læs mere

Trolling Master Bornholm 2015

Trolling Master Bornholm 2015 Trolling Master Bornholm 2015 (English version further down) Panorama billede fra starten den første dag i 2014 Michael Koldtoft fra Trolling Centrum har brugt lidt tid på at arbejde med billederne fra

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

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

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

Abstrakte datatyper C#-version

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

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

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

PR day 7. Image+identity+profile=branding

PR day 7. Image+identity+profile=branding PR day 7 Image+identity+profile=branding A few definitions Public Relations is the planned and sustained effort to establish and maintain goodwill and understanding between an organisation and it s public.

Læs mere

Bilag. Resume. Side 1 af 12

Bilag. Resume. Side 1 af 12 Bilag Resume I denne opgave, lægges der fokus på unge og ensomhed gennem sociale medier. Vi har i denne opgave valgt at benytte Facebook som det sociale medie vi ligger fokus på, da det er det største

Læs mere

Trolling Master Bornholm 2015

Trolling Master Bornholm 2015 Trolling Master Bornholm 2015 (English version further down) Sæsonen er ved at komme i omdrejninger. Her er det John Eriksen fra Nexø med 95 cm og en kontrolleret vægt på 11,8 kg fanget på østkysten af

Læs mere

applies equally to HRT and tibolone this should be made clear by replacing HRT with HRT or tibolone in the tibolone SmPC.

applies equally to HRT and tibolone this should be made clear by replacing HRT with HRT or tibolone in the tibolone SmPC. Annex I English wording to be implemented SmPC The texts of the 3 rd revision of the Core SPC for HRT products, as published on the CMD(h) website, should be included in the SmPC. Where a statement in

Læs mere

Danish Language Course for International University Students Copenhagen, 12 July 1 August Application form

Danish Language Course for International University Students Copenhagen, 12 July 1 August Application form Danish Language Course for International University Students Copenhagen, 12 July 1 August 2017 Application form Must be completed on the computer in Danish or English All fields are mandatory PERSONLIGE

Læs mere

Boligsøgning / Search for accommodation!

Boligsøgning / Search for accommodation! Boligsøgning / Search for accommodation! For at guide dig frem til den rigtige vejledning, skal du lige svare på et par spørgsmål: To make sure you are using the correct guide for applying you must answer

Læs mere

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 Shooting tethered med Canon EOS-D i Capture One Pro Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 For Canon EOS-D ejere der fotograferer Shooting tethered med EOS-Utility eller

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

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

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

Læs mere

Bilag 8. TDC technical requirements for approval of splitterfilters and inline filters intended for shared access (ADSL or VDSL over POTS).

Bilag 8. TDC technical requirements for approval of splitterfilters and inline filters intended for shared access (ADSL or VDSL over POTS). Bilag 8. TDC technical requirements for approval of splitters and inline s intended for shared access (ADSL or VDSL over POTS). Dette bilag udgør bilag 8 til det mellem parterne tiltrådte Produkttillæg

Læs mere

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

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

Programmering i C. Lektion november 2008

Programmering i C. Lektion november 2008 Programmering i C Lektion 3 18. november 2008 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler Kontrolstrukturer Udvælgelse Gentagelse

Læs mere

VPN VEJLEDNING TIL MAC

VPN VEJLEDNING TIL MAC VPN VEJLEDNING TIL MAC MAC OS X 1 VPN VEJLEDNING TIL MAC Formålet med en VPN forbindelse er, at du kan tilgå nogle af Aarhus Universitets services hjemmefra, som ellers kun er tilgængelige, når du er på

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

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Fortæl om Ausumgaard s historie Der er hele tiden snak om værdier, men hvad er det for nogle værdier? uddyb forklar definer

Læs mere

Tredjepart webservices

Tredjepart webservices Tredjepart webservices 4. juni 2015 USS Dok. Klik her for at angive tekst. 1/12 Indholdsfortegnelse Introduktion... 3 Miljøer... 3 Adgang... 3 API kald... 4 GET: /authorizations... 4 Input 4 Output 4 Output

Læs mere

Mindfulness. At styrke trivsel, arbejde og ledelse

Mindfulness. At styrke trivsel, arbejde og ledelse Mindfulness At styrke trivsel, arbejde og ledelse Energiregnskabet Mindfulness i forsikringsvirksomhed 100 % har fået anvendelige redskaber til håndtering af stress 93 % oplever en positiv forandring

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

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

Indhold. Senest opdateret:03. september 2013. Side 1 af 8

Indhold. Senest opdateret:03. september 2013. Side 1 af 8 Indhold Introduktion... 2 Scenarier hvor API et kan benyttes... 2 Scenarie 1 Integration til lagerhotel... 2 Scenarie 2 Integration til økonomi system... 2 API Modeller... 2 Webshop2 API Model v1... 3

Læs mere

Induktive og rekursive definitioner

Induktive og rekursive definitioner Induktive og rekursive definitioner Denne note omhandler matematiske objekter, som formelt er opbygget fra et antal basale byggesten, kaldet basistilfælde eller blot basis, ved gentagen brug af et antal

Læs mere

Leverandørdialog. R2 Group A/S. R2 Group A/S. Nøglen til at være REACH parat V. Jan Skov Nørby

Leverandørdialog. R2 Group A/S. R2 Group A/S. Nøglen til at være REACH parat V. Jan Skov Nørby Leverandørdialog Nøglen til at være REACH parat V. Jan Skov Nørby R2 Group A/S Slide 1 Leverandørdialog 30-01-2008 R2 Group A/S Handels- og distributions-virksomhed (80%) Produktion (20%) Foder og fødevarer

Læs mere

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP) Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP) Speciale efterår 2005 Teknisk Informationsteknologi Jan Lauritzen & Mads

Læs mere

USERTEC USER PRACTICES, TECHNOLOGIES AND RESIDENTIAL ENERGY CONSUMPTION

USERTEC USER PRACTICES, TECHNOLOGIES AND RESIDENTIAL ENERGY CONSUMPTION USERTEC USER PRACTICES, TECHNOLOGIES AND RESIDENTIAL ENERGY CONSUMPTION P E R H E I S E L BERG I N S T I T U T F OR BYGGERI OG A N L Æ G BEREGNEDE OG FAKTISKE FORBRUG I BOLIGER Fra SBi rapport 2016:09

Læs mere

uprocessorens hardware

uprocessorens hardware uprocessorens hardware 8080 Architecture Kernen i en processor er ALUen. Det er den som kan udfører simple regne operationer. De tal den arbejdermed gemmes i en række registre. Når et tal skal hentes eller

Læs mere

2013 SP1. Konfiguration af koncernindblik. Configuration Guide

2013 SP1. Konfiguration af koncernindblik. Configuration Guide 2013 SP1 Konfiguration af koncernindblik Configuration Guide Intellectual Property Rights This document is the property of ScanJour. The data contained herein, in whole or in part, may not be duplicated,

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater Design by Contract Design and Programming by Contract Anne Haxthausen ah@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design by Contract er en teknik til at specificere

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

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

Åbenrå Orienteringsklub

Åbenrå Orienteringsklub Åbenrå Orienteringsklub Velkommen til det ægte orienteringsløb på Blå Sommer 2009 Din gruppe har tilmeldt spejdere til at deltage i det ægte orienteringsløb på Blå Sommer 2009. Orienteringsløbet gennemføres

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

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

3. PROJEKT, 2 SEMESTER

3. PROJEKT, 2 SEMESTER 3. PROJEKT, 2 SEMESTER Bruger undersøgelse, af sociale medie. KENDSKAB TIL OG BRUG AF ONLINE SOCIALE MEDIER FORENINGEN AF DANSKE INTERAKTIVE MEDIER, FÅET TIL OPGAVE AT AFDÆKKE DANSKERNES BRUG AF SOCIALE

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere

Financial Literacy among 5-7 years old children

Financial Literacy among 5-7 years old children Financial Literacy among 5-7 years old children -based on a market research survey among the parents in Denmark, Sweden, Norway, Finland, Northern Ireland and Republic of Ireland Page 1 Purpose of the

Læs mere