Løsninger til DDD 2016 Runde 1 1 2 Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: 3 4 5 Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: WINNER 3. og 4. bogstav skal være ens, mens alle de resterende er forskellige. Al tekst i en computer repræsenteres i form af en talkode. Se https://da.wikipedia.org/wiki/ASCII og https://da.wikipedia.org/wiki/Unicode. At følge en række instruktioner bygger på et fundamentalt begreb i datalogi: algoritme (se http://denstoredanske.dk/It,_teknik_og_naturvidenskab/Informatik/Software,_p rogrammering,_internet_og_webkommunikation/algoritme og http://people.math.aau.dk/~olav/dmge04/slilek3.pdf). Dennis, Anne, Carl, Børge, Erik Lad os først stille dem op i størrelsesorden: D, C, E, A, B nu kan de så lettere stilles op. D må være forrest, da alle andre har en højere person foran sig. B som er mindst må stå på fjerde position, da der er én større bagved. A som er næstmindst må stå på anden position, da hun har to højere bag sig. Osv. Sortering er et væsentligt element i mange sammenhænge: https://en.wikipedia.org/wiki/Sorting_algorithm 4×(2×(Orange, Drej), 3×(Sort), 2×(Orange, Drej)) De tre andre giver en korrekt figur, men fra forskellige startpositioner. Vi ser her eksempler på algoritmer, hvor et problem er blevet opdelt i mindre delproblemer, der hver løses ved et antal (eventuelt gentagne) simplere trin. 3 Figuren illustrerer, at man kan løse det i 3 omgange. Bemærk, at der nødvendigvis må være et ulige antal omgange! Og én er ikke muligt. Her har vi igen at gøre med en algoritme. Man kan illustrere problemet vhja grafteori : https://da.wikipedia.org/wiki/Grafteori, http://www.georgmohr.dk/noter/grafteori2014.pdf og en dybde-først algoritme: http://www.imada.sdu.dk/~rolf/Edu/DM507/F13/graphTraversalSlides.pdf 6 7 Korrekt svar Forklaring I det tredje net vil robotten ramme den sorte forhindring, kanterne eller sin tidligere bane (se figuren), hvorfor den ikke når målet. Hvad har det med datalogi at gøre: Korrekt svar Når man konstruerer algoritmer som her, er det vigtigt, at de altid løser problemet, så for denne robot burde man konstruere en bedre algoritme. Forklaring D => 8 9 Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar Forklaring C => B => B => Igen algoritme, men hvor man i hvert skridt skal holde rede på tilstanden, E og 7 Du skal vende E for at se, om der er et lige tal på den anden side. Du behøver ikke vende V. Der står jo ikke noget om konsonanter. Du behøver ikke vende 2. Det er ikke en modstrid, hvis der er en konsonant på den anden. Det er det derimod, hvis der er en vokal på den anden side af 7. Boolsk logik: https://en.wikipedia.org/wiki/Boolean_algebra 6 Start i K og skriv nu i hvert felt det mindste antal skridt, man kan komme til feltet i. 10 Hvad har det med datalogi at gøre: Her benyttes en fundamental algoritme: bredde først. https://da.khanacademy.org/computing/computer-science/algorithms/breadthfirst-search/a/breadth-first-search-and-its-uses http://cs.au.dk/~gerth/dADS2-10/slides/graphs.pdf Korrekt svar Forklaring 64 Antag at sekvensen af navne er A B C D E F G H I J, og der søges efter navnene i rækkefølgen B C D E F G H I J A. Søgningerne vil så kræve hhv. 2, 3, 4, 5, 6, 7, 8, 9, 10 og 10 sammenligninger, hvilket i alt giver 64 sammenligninger. At det rent faktisk også er det værste antal sammenligninger man kan lave, kan ses på flg. måde. Hvis vi antog navnene ikke blev byttet om efter hver søgning, ville det altid kræve præcis 1+2+…+10 = 55 sammenligninger, da vi søger efter hvert navn præcis én gang. Efter hver søgning, kan ét navn højst placeres én plads værre end før (vi flytter højst ét navn vi ikke allerede har undersøgt én gang til højre). Før den 10. søgning kan vi altså højst have flyttet navnene, så de står 9 pladser værre end hvis de var forblevet på den samme plads hele tiden – altså er 55+9=64 en øvre grænse for hvor mange sammenligninger, der maksimalt skal laves. Man laver ofte analyse af sine algoritmer for at finde ud af hvor lang tid de vil tage for de værst mulige input. http://www.geeksforgeeks.org/analysis-ofalgorithms-set-2-asymptotic-analysis/ Z<=X, X<=Y, Y<=H Hvad har det med datalogi at gøre: 11 12 Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: I programmer har man ofte brug for at benytte sig af at noget er lænket til noget andet – enten ved brug af pointere i C og Pascal (https://en.wikipedia.org/wiki/Pointer_(computer_programming)) eller references i Java (http://programmers.stackexchange.com/questions/141834/how-is-a-javareference-different-from-a-c-pointer) Et 4-træ består af 4 skridt frem og to 3-træer. Vi ser her et eksempel på en rekursiv beskrivelse. Rekursion er et meget vigtigt begreb i datalogi (og matematik). http://denstoredanske.dk/It,_teknik_og_naturvidenskab/Informatik/Software,_p 13 14 Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: 15 16 17 18 19 Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: Korrekt svar rogrammering,_internet_og_webkommunikation/rekursion http://people.cs.aau.dk/~normark/c-prog-06/pdf/recursion.pdf I TSEUQ ON Man kan prøve sig frem (trial and error: http://denstoredanske.dk/Krop,_psyke_og_su ndhed/Psykologi/Psykologiske_termer/trial_an d_error) eller man kan tænke logisk startende oppe fra eller nedefra. Abstraction: https://en.wikipedia.org/wiki/Abstraction_(computer_science) 4 (eller 5) F.eks. kan B-B, C-C, A-A, B-B forbindes. Hvis man tillader en cirkel og/eller kasse at blive forbundet flere gange (som vi desværre ikke har fået skrevet helt klart i opgaven at man ikke kan), kan der i princippet laves uendeligt mange linjer, hvorfor 5 også er et korrekt svar. Under den oprindelige mening med opgaven svarer den til at løse et kendt problem kaldet ”Longest Common Subsequence” (https://en.wikipedia.org/wiki/Longest_common_subsequence_problem) 3 Der er 6 byer, som har et ulige antal veje. Det er kun muligt, hvis alle har et lige antal. Euler circuit: https://www.youtube.com/watch?v=REfC1-igKHQ Kun til venstre Det er faktisk et velkendt problem, som omhandler ”plane grafer” : https://en.wikipedia.org/wiki/Planar_graph 12 I dette tilfælde kan man forholdsvis let finde den korteste vej, men er der mange flere forbindelser må man benytte en algoritme til det. Dijkstra’s er en af de bedst kendte: https://www.youtube.com/watch?v=1057z9XTfcs 24 Der er et ulige antal veje, der fører til/fra A og C. Vi bliver derfor nødt til at køre den vej to gange. Så svaret er summen af alle veje plus den korteste vej fra A til C. Chinese postman problem: https://www.youtube.com/watch?v=spaUY8PlyYA 4 Forklaring 20 Hvad har det med datalogi at gøre: Korrekt svar Forklaring Hvad har det med datalogi at gøre: På figuren har vi markeret en del af kortet, der skal bruges 4 farver til at farvelægge. Det er et stort matematisk resultat, at ethvert kort som det på figuren også kan farvelægges med 4 farve (se: http://en.wikipedia.org/wiki/Four_color_theorem). 3 AABCBABCBAA (f.eks. ved indsættelse af de 3 røde bogstaver bliver AABCABCA et palindrom) At finde det færreste antal tegn, der skal indsættes for at lave et ord til et palindrom, kan gøres ved hjælp af dynamisk programmering, som et klassisk koncept inden for datalogi (https://en.wikipedia.org/wiki/Dynamic_programming)
© Copyright 2024