Mejslas logga

Artiklar för Expert Network

Under åren 2016–2019 samarbetade IDG med ett antal utvalda experter inom IT. De skrev artiklar om "spaningar", och artiklarna publicerades i tidningar som CIO Sweden, Computer Sweden och TechWorld.

Karl Dickson - Expert Network

Under 2024 bytte IDG publicerings­system, och de flesta artiklarna plockades då bort från deras webbplatser. De artiklar som Mejsla bidrog med till Expert Network publiceras nu här på Mejslas webbplats med tillåtelse från IDG.

Olösbara problem för utvecklare

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. Ni som inte känner till det får söka på nätet (eller fråga kompisen). Problematiken i Monty Hall går att simulera i en dator, och det är till och med ett vanligt rekryterings­test för utvecklare att skriva en sådan simulator. Jag tänkte berätta om ett annat paradox­liknande 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å databas­marknaden i uppgift att jämföra prestanda för deras databas med några välkända dataaser. Det uppdraget tog stopp när vi upptäckte att en större databas­aktör i sina licens­avtal hade en klausul om att man måste få tillstånd från dem för att offentlig­göra prestanda­jämförelser med deras produkt. Vi sökte förstås tillstånd, men fick det inte.
Mission impossible by law.

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

Det paradox­liknande 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% 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% 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?

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?


Denna artikel publicerades ursprungligen hos IDG i februari 2017.
Författare: Karl Dickson