{"id":1972,"date":"2014-05-06T18:00:53","date_gmt":"2014-05-06T15:00:53","guid":{"rendered":"http:\/\/spektrum.fi\/spektraklet\/?p=1972"},"modified":"2018-03-15T15:53:34","modified_gmt":"2018-03-15T12:53:34","slug":"dorrkodsproblemet","status":"publish","type":"post","link":"https:\/\/spektrum.fi\/spektraklet\/dorrkodsproblemet\/","title":{"rendered":"D\u00f6rrkodsproblemet"},"content":{"rendered":"<p><strong>En skr\u00e4mmande tanke<\/strong><\/p>\n<p>F\u00f6rest\u00e4ll dig f\u00f6ljande scenario: Du \u00e4r p\u00e5 v\u00e4g till \u00e5rhundradets fest som f\u00f6rst\u00e5s ordnas i Majstranden. D\u00e5 du sitter p\u00e5 bussen m\u00e4rker du att du har gl\u00f6mt telefonen hemma, men du l\u00e5ter inte en s\u00e5dan liten motg\u00e5ng s\u00e4nka hum\u00f6ret. N\u00e4r du \u00e4ntligen anl\u00e4nder till Majstranden och skall sl\u00e5 in d\u00f6rrkoden m\u00e4rker du att du inte kommer ih\u00e5g den! &#8221;Inget problem&#8221;, t\u00e4nker du, f\u00f6r n\u00e5gon m\u00e5ste ju snart komma ut och s\u00e5 kan du slinka in samtidigt. Efter att ingen setts till p\u00e5 en kvart fattar du pl\u00f6tsligt att alla andra redan m\u00e5ste vara p\u00e5 festen (det \u00e4r ju \u00e5rhundradets fest vi talar om), s\u00e5 det \u00e4r klart att ingen \u00e4r p\u00e5 v\u00e4g ut p\u00e5 l\u00e4nge!<\/p>\n<p>&#8221;Ingen orsak att panikera&#8221;, t\u00e4nker du, &#8221;detta problem g\u00e5r nog att l\u00f6sa&#8221;. Du samlar ihop allt vad du vet om problemet: koden \u00e4r fyra siffror l\u00e5ng (f\u00f6r alla koder \u00e4r ju det), och fr\u00e5n manicken du sl\u00e5r in den p\u00e5 ser du att den kan best\u00e5 av siffror fr\u00e5n 0 till 9. Du ber\u00e4knar snabbt att det finns totalt <img src='https:\/\/s0.wp.com\/latex.php?latex=10%5E4+%3D+10000&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='10^4 = 10000' title='10^4 = 10000' class='latex' \/> m\u00f6jliga koder, s\u00e5 ifall du pr\u00f6var dem alla, m\u00e5ste d\u00f6rren \u00f6ppnas f\u00f6rr eller senare. F\u00f6r inmatandet av alla koder m\u00e5ste du d\u00e5 sl\u00e5 in <img src='https:\/\/s0.wp.com\/latex.php?latex=4+%5Ccdot+10000+%3D+40000&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='4 \\cdot 10000 = 40000' title='4 \\cdot 10000 = 40000' class='latex' \/> siffror.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-757\" src=\"http:\/\/spektraklet.files.wordpress.com\/2014\/05\/dorrkod.jpg\" alt=\"D\u00f6rrkod\" width=\"150\" height=\"266\" \/><\/p>\n<p style=\"text-align: center; font-size: 12px;\">Hmm&#8230;1234 kanske?<\/p>\n<p>Efter att du funderat p\u00e5 problemet en stund till, s\u00e5 kommer <del>n\u00e5gon och \u00f6ppnar d\u00f6rren<\/del> du ih\u00e5g att n\u00e5gon sagt \u00e5t dig att d\u00f6rrkodsl\u00e4sare brukar fungera lite konstigt. De kr\u00e4ver n\u00e4mligen inte att man h\u00e5ller en paus efter att man slagit in de fyra siffrorna f\u00f6rr\u00e4n den kollar ifall koden \u00e4r korrekt. F\u00f6r att d\u00f6rren skall \u00f6ppnas r\u00e4cker det att man i n\u00e5got skede sl\u00e5r in de fyra korrekta siffrorna i rad. Det har allts\u00e5 ingen skillnad fast man matar in felaktiga siffror i b\u00f6rjan s\u00e5 l\u00e4nge den korrekta koden sl\u00e5s in i n\u00e5got skede. Ifall du sl\u00e5r in fem siffror har du allts\u00e5 matat in tv\u00e5 olika fyrsiffriga koder! Den f\u00f6rsta best\u00e5r av siffrorna 1-4, och den andra av siffrorna 2-5.<\/p>\n<p>Du fattar direkt att f\u00f6r att alla koder skall finnas n\u00e5gonstans i den sekvens du sl\u00e5r in, m\u00e5ste du knappast mata in 40000 siffror, eftersom koderna \u00f6verlappar varandra. Vilken strategi skulle det l\u00f6na sig att anv\u00e4nda f\u00f6r att f\u00e5 inslaget alla koder med s\u00e5 f\u00e5 siffror som m\u00f6jligt? Naturligtvis l\u00f6nar det sig att undvika upprepning av koder, allts\u00e5 vill du i varje skede sl\u00e5 in en s\u00e5dan siffra som skapar en fyrsiffrig kod som du inte matat in tidigare.<\/p>\n<p><strong>Simplifikation av problemet<\/strong><\/p>\n<p>F\u00f6r att simplifiera problemet rycker vi oss f\u00f6r en stund bort fr\u00e5n v\u00e5rat scenario och funderar i st\u00e4llet p\u00e5 en d\u00f6rrkodsl\u00e4sare som endast har siffrorna 0 och 1 och kr\u00e4ver en tv\u00e5siffrig kod. Det finns allts\u00e5 <img src='https:\/\/s0.wp.com\/latex.php?latex=2%5E2+%3D+4&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='2^2 = 4' title='2^2 = 4' class='latex' \/> olika koder, n\u00e4mligen koderna <img src='https:\/\/s0.wp.com\/latex.php?latex=00&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='00' title='00' class='latex' \/>, <img src='https:\/\/s0.wp.com\/latex.php?latex=01&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='01' title='01' class='latex' \/>, <img src='https:\/\/s0.wp.com\/latex.php?latex=10&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='10' title='10' class='latex' \/> och <img src='https:\/\/s0.wp.com\/latex.php?latex=11&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='11' title='11' class='latex' \/>. I vilken ordning skulle man sl\u00e5 in siffror i detta fall f\u00f6r att med s\u00e5 liten m\u00f6da som m\u00f6jligt f\u00e5 upp d\u00f6rren? En m\u00f6jlighet \u00e4r att sl\u00e5 in sekvensen <img src='https:\/\/s0.wp.com\/latex.php?latex=11001&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='11001' title='11001' class='latex' \/>. Den inneh\u00e5ller alla koder:<\/p>\n<ul style=\"padding-left: 20px;\">\n<li><b>11<\/b>001<\/li>\n<li>1<b>10<\/b>01<\/li>\n<li>11<b>00<\/b>1<\/li>\n<li>110<b>01<\/b><\/li>\n<\/ul>\n<p>\u00c4r det m\u00f6jligt att hitta en kortare sekvens som inneh\u00e5ller alla koder? Genom att analysera listan ovan ser vi fort att det inte kan g\u00e5. F\u00f6r att visa detta, antag att <img src='https:\/\/s0.wp.com\/latex.php?latex=L&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='L' title='L' class='latex' \/> \u00e4r en sekvens av siffror 0 och 1. Ifall den inneh\u00e5ller alla fyra olika koder av l\u00e4ngd tv\u00e5, m\u00e5ste var och en av koderna starta vid olikt index i sekvensen. D\u00e4rmed kan den sista koden starta som tidigast vid index 4, och eftersom den \u00e4r av l\u00e4ngden tv\u00e5, m\u00e5ste sekvensen <img src='https:\/\/s0.wp.com\/latex.php?latex=L&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='L' title='L' class='latex' \/> vara minst fem siffror l\u00e5ng. Detta betyder att \u00e4r sekvensen <img src='https:\/\/s0.wp.com\/latex.php?latex=11001&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='11001' title='11001' class='latex' \/> den kortaste m\u00f6jliga l\u00f6sningen. Dock finns det andra l\u00f6sningar av l\u00e4ngden fem ocks\u00e5, t.ex. <img src='https:\/\/s0.wp.com\/latex.php?latex=00110&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='00110' title='00110' class='latex' \/>.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-758\" src=\"http:\/\/spektraklet.files.wordpress.com\/2014\/05\/01dorrkod.png\" alt=\"Bin\u00e4r d\u00f6rrkod\" width=\"270\" height=\"211\" \/><\/p>\n<p style=\"text-align: center; font-size: 12px;\">D\u00f6rrkodsl\u00e4sare, modell datalog (Patent pending)<\/p>\n<p>Hur skapades d\u00e5 sekvensen <img src='https:\/\/s0.wp.com\/latex.php?latex=11001&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='11001' title='11001' class='latex' \/>? En m\u00f6jlig strategi \u00e4r f\u00f6ljande: b\u00f6rja med den st\u00f6rsta koden (i detta fall <img src='https:\/\/s0.wp.com\/latex.php?latex=11&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='11' title='11' class='latex' \/>), och v\u00e4lj sedan den l\u00e4gsta m\u00f6jliga siffran som skapar en ny kod till sekvensen, dvs. en kod som inte fr\u00e5n tidigare finns i sekvensen. Ifall detta alltid lyckas, kommer vi att f\u00e5 till st\u00e5nd en m\u00f6jligtvis kort sekvens, eftersom den inte upprepar n\u00e5gra koder.<\/p>\n<p>Ifall vi anv\u00e4nder denna strategi i v\u00e5rt ursprungliga scenario, kommer vi att f\u00e5 till st\u00e5nd en sekvens av l\u00e4ngden <img src='https:\/\/s0.wp.com\/latex.php?latex=10%5E4+%2B+%284-1%29+%3D+10003&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='10^4 + (4-1) = 10003' title='10^4 + (4-1) = 10003' class='latex' \/> (b\u00f6rjandes med siffrorna <img src='https:\/\/s0.wp.com\/latex.php?latex=9999&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='9999' title='9999' class='latex' \/>) som inneh\u00e5ller alla koder, en klar f\u00f6rb\u00e4ttring till att vara tvungen att mata in 40000 siffror!<\/p>\n<p><strong>Det allm\u00e4nna problemet<\/strong><\/p>\n<p>Den stora fr\u00e5gan \u00e4r f\u00f6ljande: Kan vi f\u00f6r alla kodl\u00e4ngder <img src='https:\/\/s0.wp.com\/latex.php?latex=k&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='k' title='k' class='latex' \/> och sifferantal (dvs. baser) <img src='https:\/\/s0.wp.com\/latex.php?latex=b&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='b' title='b' class='latex' \/> alltid skapa en sekvens som inte upprepar n\u00e5gon kod tv\u00e5 g\u00e5nger? Svaret \u00e4r kanske aningen \u00f6verraskande ja. Beviset i sin helhet, till vilket det finns en l\u00e4nk i slutet av artikeln, \u00e4r lite f\u00f6r invecklat f\u00f6r att tas upp i denna artikel, men det bygger p\u00e5 f\u00f6ljande observation: Antag f\u00f6r enkelhetens skull att vi vill skapa koder av l\u00e4ngd 4 som best\u00e5r av siffrorna 0, 1, 2 och 3. Ifall vi har n\u00e5gon kod, t.ex. <img src='https:\/\/s0.wp.com\/latex.php?latex=0233&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='0233' title='0233' class='latex' \/>, kan efter denna kod i sekvensen f\u00f6lja endast en kod som b\u00f6rjar med siffrorna <img src='https:\/\/s0.wp.com\/latex.php?latex=233&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='233' title='233' class='latex' \/> och slutar med en av siffrorna 0, 1, 2 eller 3. Detta g\u00f6r att sekvensen blir mycket symmetrisk, eftersom det efter n\u00e5gon av koderna <img src='https:\/\/s0.wp.com\/latex.php?latex=0233%2C+1233%2C+2233%2C+3233&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='0233, 1233, 2233, 3233' title='0233, 1233, 2233, 3233' class='latex' \/> endast kan f\u00f6lja n\u00e5gon av koderna <img src='https:\/\/s0.wp.com\/latex.php?latex=2330%2C+2331%2C+2332%2C+2333&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='2330, 2331, 2332, 2333' title='2330, 2331, 2332, 2333' class='latex' \/>.<\/p>\n<p><strong>Till\u00e4mpning till scenariot<\/strong><\/p>\n<p>Smart som du \u00e4r kom du p\u00e5 denna l\u00f6sning till problemet p\u00e5 s\u00e4g&#8230;22 minuter. Du b\u00f6rjade sedan knacka in siffrorna, och eftersom du har ett utomordentligt minne kunde du h\u00e5lla reda p\u00e5 vilka koder du redan slagit in. Efter en dryg timme lyckades du d\u00e4rmed f\u00e5 upp d\u00f6rren, och kv\u00e4llen var r\u00e4ddad. Sn\u00e4ll som du \u00e4r skapade du \u00e5t dina v\u00e4nner en <a href=\"http:\/\/www.cs.helsinki.fi\/u\/sbjorkqv\/txt\/b10_k4\">textfil<\/a> med den kod som beh\u00f6vs f\u00f6r att \u00f6ppna vilken som helst d\u00f6rr med fyrsiffrig kod i bas 10!<\/p>\n<p><strong>Till sist<\/strong><\/p>\n<p>Ett stort tack till Lasse och Jeremias f\u00f6r hj\u00e4lpen med detta problem!<\/p>\n<p>Den som \u00e4r intresserad att l\u00e4sa mera om d\u00f6rrkodsproblemet kan ta en titt p\u00e5 f\u00f6ljande text (p\u00e5 engelska):<\/p>\n<p><a href=\"http:\/\/www.cs.helsinki.fi\/u\/sbjorkqv\/pdf\/door_code_problem.pdf\">The door code problem<\/a><\/p>\n<p>Ifall du vill veta den sekvens (av l\u00e4ngden 10003) som du s\u00e4kert kommer in till Majstranden med, kan du skriva ut f\u00f6ljande textfil:<\/p>\n<p><a href=\"http:\/\/www.cs.helsinki.fi\/u\/sbjorkqv\/txt\/b10_k4\">Bas 10, kodl\u00e4ngd 4<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En skr\u00e4mmande tanke F\u00f6rest\u00e4ll dig f\u00f6ljande scenario: Du \u00e4r p\u00e5 v\u00e4g till \u00e5rhundradets fest som f\u00f6rst\u00e5s ordnas i Majstranden. D\u00e5 du sitter p\u00e5 bussen m\u00e4rker du att du har gl\u00f6mt telefonen hemma, men du l\u00e5ter inte en s\u00e5dan liten motg\u00e5ng s\u00e4nka hum\u00f6ret. N\u00e4r du \u00e4ntligen anl\u00e4nder till Majstranden och skall sl\u00e5 in d\u00f6rrkoden m\u00e4rker du &hellip; <a href=\"https:\/\/spektrum.fi\/spektraklet\/dorrkodsproblemet\/\" class=\"more-link\">Forts\u00e4tt l\u00e4sa <span class=\"screen-reader-text\">D\u00f6rrkodsproblemet<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[83,5],"tags":[57],"_links":{"self":[{"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/posts\/1972"}],"collection":[{"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/comments?post=1972"}],"version-history":[{"count":1,"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/posts\/1972\/revisions"}],"predecessor-version":[{"id":1973,"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/posts\/1972\/revisions\/1973"}],"wp:attachment":[{"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/media?parent=1972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/categories?post=1972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spektrum.fi\/spektraklet\/wp-json\/wp\/v2\/tags?post=1972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}