En algoritme er et sæt instruktioner. Definitionen er virkelig så enkel. En algoritme kan være lige så nem som at give instruktioner som denne:
- Gå ned ad gaden.
- Tag den første til højre.
- Find det andet hus til venstre.
- Bank på døren.
- Lever pakken.
Men mens definitionen af algoritmen er enkel, kan den egentlige betydning og hvordan den påvirker vores liv være ret kompleks.
Et eksempel på en algoritme
Et almindeligt eksempel på en algoritme, som vi bruger i vores dagligdag er en opskrift. Dette sæt instruktioner giver os alle de ingredienser, vi har brug for, og anvisninger om, hvad vi skal gøre med disse ingredienser. Lyder nemt, ikke?
Men hvad nu hvis du ikke ved, hvor målekoppen holdes? Du ville have brug for en algoritme for at finde den. Du kan endda få brug for en algoritme om, hvordan du bruger en målekop.
Så mens en algoritme er et sæt instruktioner, skal det også tage højde for hvem eller hvad der skal fortolke disse instruktioner. For eksempel, hvis du giver anvisninger til en ven, der beskriver hvordan man kommer fra dit hus til nærmeste købmand, vil din ven kun vide, hvordan man kommer til butikken, hvis de ved, hvor dit hus er placeret. De er ikke i stand til (endnu) at finde den pågældende købmand fra sige en anden vens hus.
Sådan kan en algoritme være både enkel og kompleks. Og når vi taler med hensyn til computeralgoritmer, er det en grundlæggende del af formuleringen af algoritmer at forstå, hvad en computer kan klare.
Hvordan sorteringsalgoritmer udviklede sig
En af de tidligste algoritmer, der blev oprettet, var boble sorteringsrutinen. Bubbelsort er en metode til sortering af tal, bogstaver eller ord ved at løbe gennem et datasæt, sammenligne hvert sæt værdier side om side og bytte dem om nødvendigt.
Denne sløjfe gentages, indtil algoritmen kan bevæge sig gennem hele listen uden at skulle bytte noget, hvilket betyder, at værdierne er sorteret korrekt. Denne type algoritme kaldes ofte som en rekursiv algoritme, fordi den sløjfer på sig igen og igen, indtil den fuldfører opgaven.
Den slags algoritme kan se så simpelt ud som:
- Gå til den første værdi.
- Kontroller, at værdien mod den næste værdi og bytte positioner, hvis det er nødvendigt.
- Gå til næste værdi og gentag sammenligningen.
- Hvis vi er i slutningen af listen, skal du gå tilbage til toppen, hvis en værdi blev byttet under løbet.
Men sorten af boble viste sig ikke at være den mest effektiv måde at sortere værdier på. Som tiden gik, og computere blev mere i stand til hurtigt at lave komplekse opgaver, kom nye sorteringsalgoritmer op.
En sådan algoritme scanner gennem den første liste og opretter en anden liste over sorterede værdier. Denne metode gør kun en enkelt passage gennem den oprindelige liste, og med hver værdi vil den løbe gennem den anden liste, indtil den finder det rette sted for at sætte værdien. Normalt er det mere effektivt end at bruge boblesorteringsmetoden.
Det er her, hvor algoritmer kan blive rigtig vanvittige. Eller virkelig interessant, afhængigt af hvordan du ser på det.
Mens boblesorteringsmetoden betragtes som en af de mest ineffektive metoder til sortering af værdier på mange måder, hvis den oprindelige liste er forkortet ordentligt, kan boblesort være en af de mest effektiv. Det skyldes, at boble sorteringsalgoritmen i så fald vil gå igennem listen en gang og bestemme, at den er korrekt sorteret.
Desværre ved vi ikke altid, om vores liste er presorteret, så vi skal vælge en algoritme, der vil være den mest effektive til at bruge i gennemsnit på tværs af et stort antal lister.
Hvad vi lærer fra boblesortalgoritmen
- Algoritmer udvikler sig over tid, da vi finder mere effektive måder at gøre ting på og / eller computere bliver mere i stand til at udføre komplekse opgaver.
- Algoritmer bliver nogle gange valgt fordi de er "mere" effektive "mest" af tiden.
- Bare fordi en algoritme er mere effektiv betyder det hele tiden ikke, at det altid er det bedste i hvert enkelt tilfælde.
Facebook Algoritmer og mere i hverdagen
Algoritmer er på arbejde og hjælper mennesker hver dag. Når du søger på nettet, er en algoritme på arbejde, der forsøger at finde de bedste søgeresultater. Spørg din smartphone til retninger, og en algoritme bestemmer den bedste rute for dig at tage. Og når du surfer på Facebook, bestemmer en algoritme, hvilken af vores vens Facebook-indlæg der er vigtigst for os. (Lad os håbe, at vores venner ikke finder ud af, hvilken Facebook, vi synes mest om!)
Men algoritmisk tænkning kan hjælpe os langt ud over vores computers liv. Det kan endda hjælpe os med at opbygge en bedre sandwich.
Lad os sige, at jeg starter med to skiver brød, spredning sennep på en skive og mayonnaise på en anden skive. Jeg lægger et stykke ost på brødet med mayonnaise, nogle skinke på toppen af det, nogle salat, to skiver tomat og derefter hætte det med den skive med sennep på den. God sandwich, ikke?
Absolut, hvis jeg spiser det med det samme. Men hvis jeg lader det på bordet i et stykke tid, kan det øverste stykke brød få soggy fra at opsuge nogle af den tomat. Det er et problem, jeg havde ikke helt forventet, og jeg kan lave sandwich i mange år, før jeg laver det, men når jeg gør det, kan jeg begynde at tænke på måder at ændre min algoritme på for at opbygge en bedre sandwich.
For eksempel kunne jeg slippe af med tomaten. Men jeg vil ikke miste den tomatsmagning. Så i stedet kan jeg sætte tomat på sandwichen efter brød og salat. Dette gør det muligt for salat at danne en beskyttende barriere mellem tomat og brød.
Sådan udvikler en algoritme sig. Og en algoritme behøver ikke at blive drevet af en computer til at være en algoritme.En algoritme er en proces, og processer er alle omkring os.