Løsninger til DDD 2016 Runde 1

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)