Har ni någonsin fått ett omöjligt problem, ett problem som saknar lösning? Förmodligen har ni det, men extra intressant är det när man i förväg inte kan se att problemet saknar lösning.

Det finns ett känt problem från Monty Hall där lösningen överraskar många. Problematiken i Monty Hall går att simulera i en dator, och det är till och med ett vanligt rekryteringstest för utvecklare att skriva en sådan simulator. Jag tänkte berätta om ett annat paradoxliknande problem som man faktiskt kan få ökad förståelse för genom att upptäcka att det inte går att simulera.

Som konsult händer det ibland att man får uppgifter som av olika skäl visar sig vara omöjliga att lösa, och det känns ofta snopet när man till slut inser att det inte går. En gång fick vi av en mindre aktör på databasmarknaden i uppgift att jämföra prestanda för deras databas med några välkända databaser. Det uppdraget tog stopp när vi upptäckte att en större databasaktör i sina licensavtal hade en klausul om att man måste få tillstånd från dem för att offentliggöra prestandajämförelser med deras produkt. Vi sökte förstås tillstånd, men fick det inte. Mission impossible by law.

Läs också: Hur trendigt är ditt Javaprojekt? Det är viktigare än du kanske tror.

Ett annat uppdrag handlade om att paketera installationsfiler. Det var många filer som skulle packas ihop i flera steg med installationsfiler som rekursivt skulle dra igång nya installationsfiler. Det fungerade inte som väntat, och efter att ha läst på i specifikationerna för paketeringsformatet förstod vi att denna typ av installationsfiler faktiskt inte hade stöd för att packas rekursivt. Mission impossible by design.

Det paradoxliknande exemplet som jag nämnde i inledningen handlar om två kuvert med pengar. Det man vet är att det ena kuvertet innehåller dubbelt så mycket pengar som det andra. Lisa får välja ett av kuverten och när hon öppnar kuvertet ligger det 100 kronor där. Olle erbjuder henne nu att byta kuvert, och Lisa undrar varför. Olle förklarar att det är 50 procents chans att det andra kuvertet innehåller 200 kronor vilket skulle innebära en vinst på 100 kronor. Samtidigt är det förstås en risk på 50 procent att det andra kuvertet innehåller endast 50 kronor, men det skulle ju bara innebära en förlust på 50 kronor. Det måste väl vara bra att byta om man bara behöver riskera 50 kronor för en lika stor chans att vinna 100?

Läs också: Utvecklarvärlden får aldrig nog av nya språk – här är fyra färska

Om man formulerar om problemet en aning börjar man ändå ana att det finns skäl för Lisa att vara tveksam. Låt säga att Lisa inte hinner öppna det första kuvertet innan Olle erbjuder henne att byta kuvert. Då säger Olle att det finns x kronor i hennes kuvert men om hon byter kuvert så kan hon antingen förlora ett halvt x eller vinna ett helt x kronor. Även i detta fall måste det väl vara rätt att byta? Men om Lisa nu går med på att byta kuvert så kan ju Olle säga samma sak igen. Och så fastnar de i att byta kuvert i all oändlighet. Det är något som inte stämmer, men vad?

Jag ska inte här ge mig in på den matematiska förklaringen till denna skenbara paradox. Självklart går det att söka efter förklaringar på nätet, men för er som föredrar att tänka själva rekommenderar jag varmt att försöka skriva en simulator. Ibland kan en omöjlig uppgift faktiskt vara mycket lärorik. Mission impossible?

Fakta

Befattning: It-rådgivare
Företag: Mejsla
Linkedin: Karl Dickson
E-post: karl.dickson@mejsla.se
Hemsida: www.mejsla.se
Expertområden: Java med kringliggande tekniker, metoder och processer.
Bakgrund: Konsult och facilitator mellan kunders ledning och utvecklare. Lång erfarenhet av mentorskap. Byggt it-bolag sedan 1999. Utvecklare sedan slutet av 1980-talet med en masterexamen i matematik/datalogi.