610 avläsningar
610 avläsningar

De 10 konstigaste, mest briljanta algoritmerna som någonsin utformats och vad de faktiskt gör

förbi Paolo Perrone12m2025/05/13
Read on Terminal Reader

För länge; Att läsa

År 1987 uppfann två programmerare på General Electric algoritmen Marching Cubes. Det är anledningen till att läkare kan förvandla medicinska skanningar till 3D-modeller som bokstavligen räddade miljontals liv.
featured image - De 10 konstigaste, mest briljanta algoritmerna som någonsin utformats och vad de faktiskt gör
Paolo Perrone HackerNoon profile picture
0-item
1-item


Har du någonsin försökt att extrahera ett polygonalt nät från ett 3D-diskret skalärt fält?


Nej då?


Tja, tillbaka i 1987, gjorde två programmerare på General Electric - och de slutade uppfinna Marching Cubes-algoritmen.


Det är kraften i en algoritm.


Whenever you instruct a machine to solve a problem with code, you’re designing a procedure to transform bits into meaningVissa algoritmer är snabba.Vissa är eleganta.Vissa är så konstiga, de känns som trolleri.


I den här historien dyker vi in i tio av de konstigaste, mest lysande algoritmerna som någonsin utformats - de som hjälper till att söka efter miljarder rader av kod på millisekunder, generera oändliga kartor från ingenstans och förvandla kvant konstighet till praktisk logik.


#1 – Wave funktionen kollapsar

En av de konstigaste sakerna i vetenskapen är dubbelskärningsexperimentet: partiklar beter sig som vågor när du inte tittar, men i det ögonblick du observerar dem snurrar de in på plats som partiklar.


The Double Slit Experiment aka ‘The Observer Effect’


Denna idé om en "vågfunktion som kollapsar" låter abstrakt, men den har förvandlats till en förvånansvärt praktisk algoritm. Föreställ dig att du designar en sidoskrullande videospelkarta. Du vill att världen ska känna sig handgjord men också gå vidare för alltid. Du kan inte rita en oändlig karta för hand, så istället genererar du den procedurellt.


I början är varje kakel på kartan som en "våg" - det är ännu inte något specifikt. Det är fullt av möjligheter. Men när spelaren rör sig framåt - observerar världen - algoritmen "kollapsar" den osäkerheten. Världen solidifieras till en specifik kakel, men det gör det enligt de regler du har ställt in. Vägar ansluter, floder flödar där de borde, och allt känns som om det var avsiktligt utformat.


Det är slumpmässighet med ett syfte, allt utan en enda bit av generativ AI.


#2 – Modellen för spridning

Det är konstigt, verkligen konstigt.


Ta diffusionsmodeller – tekniken bakom bildgeneratorer som DALL·E och Stable Diffusion. De är baserade på en idé från termodynamik: diffusion, där partiklar naturligt sprider sig från områden med högre koncentration till områden med lägre koncentration.


I maskininlärning blir den processen vänd.


Istället för att gå från ordning till kaos börjar algoritmen med rent buller – som en bild av en katt – och lär sig hur man gradvis förfina den till en meningsfull bild.


Men du behöver en modell för att göra detta bra. Diffusionsalgoritmen fungerar i två faser.


Först under träningen tar modellen verkliga bilder och lägger gradvis till buller i en framåtgående process tills de blir oigenkännliga.

Noising and Denoising during the Diffusion Process


The architecture of the latent diffusion model (LDM).


Gör detta över miljontals märkta bilder, och du får en modell som kan drömma upp nya bilder från grunden. Katter i rymden. Antik Rom i Pixar-stil. Hyperrealistiska avokado stolar. Du namnge det.


Det är datorviktigt, men det stannar inte vid bilder. Diffusion omformar redan hur vi genererar musik, ljud och nästa upp – video.

#3 – Simulerad Annealing

En av de mest frustrerande delarna av programmering är att det sällan finns en rätt lösning - bara ett hav av okej, och några bra.Som att organisera ett Amazon-lager: dussintals sätt att göra det, men bara några som faktiskt är meningsfulla i skala.


Simulated annealing har sitt namn från metallurgi, där metaller upphettas och kyls upprepade gånger för att ta bort defekter. Samma koncept gäller för optimering.


Simulated Annealing used to optimize warehouse layout for faster order picking in an Amazon warehouse


Föreställ dig att du letar efter den högsta toppen i ett bergsområde. En grundläggande bergsklättringsalgoritm kommer att få dig fast vid den första stöten som ser lovande ut. Men simulerad upptining är smartare. Det börjar med en hög "temperatur", vilket innebär att den utforskar fritt - ibland till och med accepterar sämre vägar för att undkomma lokala fällor. När temperaturen gradvis sjunker, blir den pickare, bosätter sig bara i de bästa rörelserna.


Simulated Annealing navigating a rugged mountain range to discover the highest peak among many local summits


Kompromissen är utforskning vs. utnyttjande. Och det är inte bara användbart i kod - det är en bra metafor för att lära sig kodning också. Tidigt på, du bounce mellan språk, verktyg och ramverk. men så småningom, du svalna, låsa in och specialisera.


#4 Svart sömn

Du kan inte prata om algoritmer utan att ta fram sortering - och kanske den mest absurda smarta (och helt värdelösa) någonsin utformad ärSvart sömn.


traditionella algoritmer, såsomKvicksilverellerMergröna, använd divide-and-conquer-strategier för att återkommande bryta upp uppsättningar i subarrays och sortera dem effektivt. men någonstans på 4chan föreslog ett galet geni en helt annan strategi.


Så här fungerar det: För varje nummer i matriset, starta en ny tråd. Varje tråd sover i ett antal millisekunder lika med sitt värde, sedan skriver ut numret när det vaknar.


Sleep Sort in Action


Den smarta delen? Det hoppar över all vanlig logik och förvandlar CPU: s trådschemaläggare till sorteringsmotorn. Inga jämförelser. Ingen återgång. Bara sova och skriva ut.


Men det är vildt opraktiskt. Det bryter med negativa tal, dubbletter eller stora värden. Det är också ineffektivt, vilket skapar en tråd per nummer. Och det beror på sömntider, vilket inte är mycket exakt.


#5 Guds ord

BogoSort är en skämt algoritm: det slumpmässigt shuffles en uppsättning om och om igen tills, av ren tur, resultatet är sorterat.


Nu föreställ dig att kombinera detta med idén om kvantmekanik och multivärlden.I teorin, om alla möjliga resultat existerar över oändliga parallella universum, så finns detNågrauniversum där ditt array redan är sorterat.


Tekniken är inte riktigt där ännu, men en "Quantum BogoSort" skulle fungera genom att skapa alla dessa möjligheter på en gång, och sedan omedelbart kollapsa i universum där array sorteras - i huvudsak låta kvant slumpmässighet göra jobbet för dig.


Naturligtvis är detta science fiction, inte datavetenskap.Vi kan inte observera eller kollapsa multiversummet efter vilja.Men det är ett lekfullt tankeexperiment om brute-force slumpmässighet tagen till dess logiska (och absurda) extrem.


Bogo sort algorithm Visualized


#6 - Båten

Det jag tycker är riktigt coolt om algoritmer är hur de ibland kan spegla naturen.Ta Craig Reynolds Boids-program från 1986 - det var en av de första artificiella livssimuleringarna och det efterliknar hur fåglar flockar.KännsSå levande .


Varje fågel (eller "boid") följer bara tre regler: undvika att krascha in i grannar (Separation), anpassa sig till deras riktning (Alignment) och flytta mot den lokala gruppens centrum (Kohesion).

Boid’s algorithm rules


Men när du simulerar en massa av dessa enkla beteenden tillsammans får du fascinerande, organiska mönster som skiftar och flyter som en riktig flock.


Skönheten här är inte i koden - det är i vadframträderDessa komplexa gruppdynamiker behöver inte vara explicit programmerade. De händer bara. Det är som att stöta på naturens bluffkod för decentraliserad samordning.


3D Boid’s simulation


# 7 - SHORs algoritm

Tanken på att låsa sina brevlådor och signera sina brev med en unik signatur är baserad på ett viktigt koncept inom kryptografi: svårigheten att faktorera stora tal.


Säkerheten bakom de flesta krypteringsmetoder förlitar sig på denna enkla matematiska verklighet - multiplicera stora tal tillsammans är lätt, men att räkna ut de två ursprungliga primtal bakom produktenEtt problem som kallasprime factorization Det är extremt svårt och tidskrävande.


Faktum är att det är så svårt att det kan ta din bärbara dator hundratals biljoner år att brutto tvinga lösningen – såvida vi inte, naturligtvis, börjar använda kvantdatorer.


Shors algoritm kan bryta ner stora tal i sina primära faktorer mycket snabbare än konventionella metoder. primär faktoring är ganska enkelt, men hur denna algoritm fungerar är där saker blir riktigt konstiga.


I hjärtat av Shors algoritm är kvantmekanik begrepp som qubits, superposition och förvirring.Dessa tillåter kvantdatorer att utföra massiva beräkningar parallellt, något som klassiska datorer inte ens kan komma nära att göra.


Representation Shor’s Quantum Factorization Algorithm


Även om själva algoritmen är legitim är dess verkliga tillämpning fortfarande i sina tidiga skeden. Faktum är att det största numret som någonsin räknats med kvantdatorer bara är 21. IBM: s toppmoderna kvantsystem, Q System One, misslyckas med att räkna ett tal så enkelt som 35.


Nyligen lyckades ett kinesiskt team räkna ett stort antal med hjälp av en kvantdator, men de använde en algoritm som inte skalar bra för mycket större tal, vilket innebär att det ännu inte är praktiskt för allmän användning.


Men om kvantdatorer blir tillräckligt kraftfulla och någon räknar ut hur man skalar dessa algoritmer till riktigt stora tal, förvänta sig allvarliga störningar i cybersäkerhetens värld.


# 8 - Marschera kuber

I början av denna historia nämnde vi Marching Cubes-algoritmen - men det är värt att dyka in, eftersom det var en stor vändpunkt för att visualisera 3D-data, särskilt i medicin.


Föreställ dig att du har en 3D-skanning av människokroppen, som från en MRI. MRI ger dig inte en 3D-modell, men en jätte kub av siffror - ett 3D-skalarfält. Varje punkt i det fältet har ett värde som representerar något som vävnadsdensitet eller signalintensitet.Dessa data är kontinuerliga i rymden, men vi behöver förvandla det till något visuellt - en yta, en form, något som en dator kan rita.


Visualization of a 3d Scalar Field


Det är där Marching Cubes kommer in. Algoritmen tar detta 3D-fält och marscherar genom det en liten kub i taget.


Nu är här den smarta bit: var och en av de åtta punkterna är antingen över eller under en tröskel (t.ex. där huden blir till ben).


Det ger dig ett 8-bitarsnummer - 256 möjliga kombinationer för varje liten kub. För var och en av dessa kombinationer har ett specifikt mönster av trianglar beräknats och lagrats i en sökningstabell. Dessa trianglar används för att ungefärliggöra ytan som passerar genom den kuben. Så istället för att beräkna komplicerad geometri varje gång, tittar algoritmen bara på det.


Illustration of the 15 basic cases of the marching cubes technique


Genom att upprepa denna process – marschera genom kub efter kub, plugga i värden, leta upp former – bygger algoritmen gradvis upp ett komplett 3D-nät.


FMRI of the Human Brain


Detta var banbrytande på 1980-talet eftersom det förvandlade platta MRI- eller CT-skanningsskivor till faktiska 3D-modeller som läkare kunde rotera, zooma in och analysera.


# 9 - Praktisk bysantinsk feltolerans

I modern databehandling arbetar vi ofta med distribuerade system – nätverk av datorer som sprids över molnet.


Föreställ dig detta: flera generaler från den bysantinska armén omger en stad. De behöver samordna och attackera samtidigt för att vinna. Men de kan bara kommunicera genom att skicka meddelanden, och några av dessa generaler kan vara förrädare som försöker sabotera planen.


I ett distribuerat system kan vissa maskiner krascha, vara långsamma eller till och med bli hackade.Hur kan resten av nätverket komma överens om vad de ska göra när de inte kan lita på alla?


Det är där konsensusalgoritmer som PBFT – Practical Byzantine Fault Tolerance – kommer in. PBFT är utformad för att hantera dessa typer av misslyckanden. Det fungerar genom att ha en nod föreslå en åtgärd genom att sända ett ”förbered” meddelande. De andra noderna svarar med bekräftelser. När ett visst antal noder (vanligtvis två tredjedelar eller mer) är överens, når de konsensus. Slutligen skickar den ursprungliga noden ett ”kommit” meddelande, som säger till alla att utföra åtgärden. Även om upp till en tredjedel av noderna är felaktiga eller skadliga, kan systemet fortfarande fungera korrekt.


Normal case operation of the Practical Byzantine Fault Tolerance (PBFT) network


Algoritmer som PBFT är ryggraden i blockchain-system och distribuerade molndatabaser, vilket hjälper dem att förbli konsekventa och pålitliga - även när saker går fel.


Avsnitt 10 - Boyer Moore

Och slutligen, det tar oss till en gammaldags algoritm som tyst driver några av de snabbaste verktygen vi använder idag - som grep. Det kallas Boyer-Moore strängsökning, och det blåste nyligen mitt sinne på grund av hur kontraintuitivt det är: ju längre texten, densnabbareDet får det.


De flesta grundläggande sökalgoritmer går vänster till höger och kontrollerar varje tecken en efter en.right to leftinom sökmönstret, och det använder två smarta knep för att hoppa över stora bitar av text.“needle”I ett stort block av text.


1. Bad character rule:

Om du söker efter "needle" och den aktuella texttecknet är "z" - då finns det inget sätt att en match kan börja vid eller före den punkten. Så istället för att kontrollera tecken efter tecken, hoppar algoritmen framåt med 6 positioner - hela längden på "needle" - och fortsätter.


2. Good suffix rule:

Om du letar efter "needle" och du bara matchade "dle" i slutet - men nästa tecken bryter matchen - algoritmen börjar inte om från nästa bokstav. Istället frågar den: dyker "dle" upp tidigare i "needle"? Om ja, ändrar det mönstret så att tidigare "dle" linjer upp. Om inte, hoppar det över hela "dle" delen helt.


Dessa heuristiska hoppa strategier är inte perfekta, men de ärVägenEffektivare än brutto force.


Som texten blir längre tenderar algoritmen att hoppa över fler och fler tecken, vilket gör det snabbare i förhållande till storleken på inmatningen.Det är därför verktyg som grep kan tugga igenom gigabyte av loggar med överraskande hastighet - och varför denna decennier gamla algoritm fortfarande känns som svart magi idag.


När logik möter fantasi: Algoritmens verkliga kraft

Oavsett om det handlar om att förvandla kvant osäkerhet till praktisk bildgenerering, efterlikna biologiskt flockningsbeteende med tre enkla regler eller söka text bakåt för att hitta mönster snabbare, visar dessa tillvägagångssätt att de mest okonventionella idéerna ofta leder till de mest kraftfulla lösningarna.


Det som gör dessa algoritmer briljanta är inte deras effektivitet eller nyhet – det är deras djärvhet.De utmanar antaganden.De vänder problem på huvudet.De förvandlar slumpmässighet till struktur, kaos till ordning och abstrakt teori till verkliga effekter.


Mer än eleganta matematiska verktyg – dessa 10 konstiga algoritmerare a testament to human ingenuity.


Visualization of Shor’s algorithm quantum circuit representation


Vill du höra från mig oftare?

👉Connect with me on LinkedIn!

Kontakta mig på LinkedIn

Jag delardagligenåtgärdbara insikter, tips och uppdateringar för att hjälpa dig att undvika kostsamma misstag och hålla dig i framkant i AI-världen.

Är du en teknisk professionell som vill växa din publik genom att skriva?

👉Missa inte vårt nyhetsbrev!

Missa inte vårt nyhetsbrev

MinTech Audience Acceleratorär fylld med handlingsbara copywriting- och publikbyggnadsstrategier som har hjälpt hundratals yrkesverksamma att sticka ut och påskynda sin tillväxt.

L O A D I N G
. . . comments & more!

About Author

Paolo Perrone HackerNoon profile picture
Paolo Perrone@paoloap
No BS AI/ML Content | ML Engineer with a Plot Twist 🥷 40k+ Followers on LinkedIn

HÄNG TAGGAR

DENNA ARTIKEL PRESENTERAS I...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks