16Aug
Tenzij je houdt van wiskunde of programmeren, kan het woord "algoritme" Grieks voor je zijn, maar het is een van de bouwstenen van alles wat je gebruikt om dit artikel te lezen. Hier volgt een korte uitleg van wat ze zijn en hoe ze werken.
Disclaimer: ik ben geen leraar wiskunde of informatica, dus niet alle termen die ik gebruik zijn technisch. Dat komt omdat ik alles in gewoon Engels probeer uit te leggen, want mensen zijn niet helemaal op hun gemak met wiskunde. Dat gezegd hebbende, er is wat wiskunde bij betrokken, en dat is onvermijdelijk. Wiskundige geeks, voel je vrij om te corrigeren of beter uit te leggen in de comments, maar houd het alsjeblieft simpel voor wiskundig onwetende onder ons.
Afbeelding door Ian Ruotsala
Wat is een algoritme?
Het woord 'algoritme' heeft een etymologie die lijkt op 'algebra', behalve dat dit verwijst naar de Arabische wiskundige zelf, al-Khwarizmi( slechts een interessante vertelling).Een algoritme, voor de niet-programmeurs onder ons, is een verzameling instructies die een invoer, A, nemen en een uitvoer, B, verschaffen die de gegevens op een of andere manier verandert. Algoritmen hebben een grote verscheidenheid aan toepassingen. In wiskunde kunnen ze helpen bij het berekenen van functies uit punten in een gegevensverzameling, naast veel geavanceerdere dingen. Afgezien van hun gebruik in de programmering zelf, spelen ze een belangrijke rol in zaken als bestandscompressie en gegevensversleuteling.
Een basispakket instructies
Stel dat uw vriend u in een supermarkt ontmoet en u hem naar u toe begeleidt. U zegt dingen als "binnenkomen via de deuren aan de rechterkant", "het visgedeelte aan de linkerkant passeren" en "als u de zuivelfabriek ziet, passeert u mij." Algoritmen werken zo. We kunnen een stroomschema gebruiken om instructies te illustreren op basis van criteria die we van tevoren kennen of om er tijdens het proces achter te komen.
( afbeelding met de titel "Icebreaking Routine" EDIT: met dank aan Trigger en Freewheel)
Vanaf START zou u het pad volgen en afhankelijk van wat er gebeurt, volgt u de "stroom" naar een eindresultaat. Stroomdiagrammen zijn visuele hulpmiddelen die begrijpelijkerwijs een reeks instructies vertegenwoordigen die door computers worden gebruikt. Evenzo helpen algoritmen hetzelfde met meer op wiskunde gebaseerde modellen.
Grafieken
Laten we een grafiek gebruiken om de verschillende manieren te illustreren waarop we een routebeschrijving kunnen geven.
We kunnen deze grafiek uitdrukken als een verbinding tussen al zijn punten. Om deze afbeelding te reproduceren, kunnen we een reeks instructies geven aan iemand anders.
Methode 1
We kunnen dit als een reeks punten voorstellen en de informatie zou de standaardvorm van grafiek ={ (x1, y1),( x2, y2),. ..,( xn, yn)} volgen.
grafiek ={ (0,0),( 3,0),( 3,3),( 5,5),( 7,10),( 8,7),( 9,4),( 10,1)}
Het is vrij eenvoudig om elk punt na elkaar te plotten en ze met het vorige punt te verbinden. Stelt u zich echter een grafiek voor met duizend punten of meerdere segmenten die allemaal op elke manier gaan. Die lijst zou veel gegevens bevatten, toch? En dan een voor een een verbinding met elkaar maken, kan lastig zijn.
Methode 2
Een ander ding dat we kunnen doen is een beginpunt opgeven, de helling van de lijn tussen het en het volgende punt, en aangeven waar het volgende punt kan worden verwacht met behulp van de standaardvorm van grafiek ={ (startpunt}, [m1, x1, h1],. .., [mn, xn, hn]} Hier stelt de variabele 'm' de helling van de lijn voor, 'x' staat voor de richting waarin moet worden geteld( of x of y), en 'h'vertelt u hoeveel in die richting tellen. U kunt ook onthouden om een punt na elke beweging te plotten.
grafiek ={ (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 1], [-3, x, 1], [-3, x, 1]}
U zult eindigen met dedezelfde grafiek. U kunt zien dat de laatste drie termen in deze uitdrukking hetzelfde zijn, dus we kunnen dat misschien inkorten door gewoon te zeggen "herhaal dat drie keer" op een of andere manier. Laten we zeggen dat wanneer u de variabele 'R ziet'verschijnen, het betekent om het laatste te herhalen. We kunnen dit doen:
grafiek ={ (0,0), [0, x, 3], [0, y, 3], [1, x, 2],[2.5, x, 2], [-3, x, 1], [R = 2]}
Wat als de afzonderlijke punten er niet echt toe doen, en alleen de grafiek zelf? We kunnen die laatste drie secties als volgt consolideren:
-grafiek ={ (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 3]}
Het verkort dingen een beetje van waar ze eerder waren.
Methode 3
Laten we dit op een andere manier proberen te doen.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = x, 3≤x≤5
y = 2.5x-7.5, 5≤x≤7
y = -3x + 29, 7≤x≤8
y = -3x + 29, 8≤x≤9
y = -3x + 29, 9≤x≤10
Hier hebben we het in zuivere algebraïsche termen. Nogmaals, als de punten zelf er niet toe doen en alleen de grafiek, kunnen we de laatste drie items consolideren.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = x, 3≤x≤5
y = 2.5x-7.5, 5≤x≤7
y = -3x + 29, 7≤x≤10
Nu, welke methode u kiest, hangt af van uw mogelijkheden. Misschien ben je goed met wiskunde en grafieken, dus je kiest voor de laatste optie. Misschien ben je goed in navigeren, dus kies je de tweede optie. Op het gebied van computers, echter, doe je veel verschillende soorten taken en de capaciteit van de computer verandert niet echt. Daarom zijn algoritmen geoptimaliseerd voor de taken die ze uitvoeren.
Een ander belangrijk punt om op te merken is dat elke methode afhankelijk is van een sleutel. Elke set instructies is nutteloos, tenzij u weet wat u ermee moet doen. Als je niet weet dat je elk punt moet plotten en de punten moet verbinden, betekent de eerste reeks punten niets. Tenzij je weet wat elke variabele in de tweede methode betekent, weet je niet hoe je ze moet toepassen, ongeveer zoals de sleutel tot een cijfer. Die sleutel is ook een integraal onderdeel van het gebruik van algoritmen, en vaak wordt die sleutel gevonden in de community of via een "standaard".
Bestandscompressie
Wanneer u een ZIP-bestand downloadt, extraheer u de inhoud zodat u alles kunt gebruikenzit erin. Tegenwoordig kunnen de meeste besturingssystemen in. zip-bestanden duiken alsof het normale mappen zijn en alles op de achtergrond doen. Op mijn Windows 95-machine meer dan tien jaar geleden moest ik alles handmatig uitpakken voordat ik iets meer kon zien dan de bestandsnamen erin. Dat komt omdat wat op de schijf als een ZIP-bestand was opgeslagen, niet in een bruikbare vorm was. Denk aan een slaapbank. Wanneer je het als een bed wilt gebruiken, moet je de kussens verwijderen en het uitklappen, wat meer ruimte in beslag neemt. Als je het niet nodig hebt, of als je het wilt transporteren, kun je het terug vouwen.
Compressie-algoritmen worden aangepast en geoptimaliseerd, specifiek voor de typen bestanden waarop ze zijn gericht. Audioformaten gebruiken bijvoorbeeld elk een andere manier om gegevens op te slaan die, wanneer ze worden gedecodeerd door de audiocodec, een geluidsbestand opleveren dat lijkt op de oorspronkelijke golfvorm. Voor meer informatie over dat verschil, bekijk ons vorige artikel, Wat zijn de verschillen tussen al die audio-indelingen? Lossless audioformaten en. zip-bestanden hebben één ding gemeen: ze geven beide de originele gegevens in de exacte vorm na het decompressieproces. Lossy audiocodecs gebruiken andere middelen om schijfruimte te besparen, zoals het trimmen van frequenties die niet door menselijke oren kunnen worden gehoord en het gladstrijken van de golfvorm in secties om van enig detail af te komen. Op het einde, hoewel we misschien niet echt het verschil kunnen horen tussen een MP3- en een CD-nummer, is er zeker een tekort aan informatie in het eerste.
Gegevenscodering
Algoritmen worden ook gebruikt bij het beveiligen van gegevens- of communicatielijnen. In plaats van gegevens op te slaan zodat het minder schijfruimte gebruikt, wordt het opgeslagen op een manier die niet door andere programma's kan worden gedetecteerd. Als iemand je harde schijf steelt en begint met scannen, kunnen ze gegevens ophalen, zelfs als je bestanden verwijdert, omdat de gegevens zelf nog steeds aanwezig zijn, ook al is de doorstuurlocatie er niet meer. Wanneer gegevens worden gecodeerd, ziet wat er wordt opgeslagen er niet uit zoals het is. Het ziet er meestal willekeurig uit, alsof fragmentatie zich in de loop van de tijd heeft opgebouwd. U kunt ook gegevens opslaan en deze als een ander type bestand laten weergeven. Beeldbestanden en muziekbestanden zijn hier goed voor, omdat ze vrij groot kunnen zijn zonder bijvoorbeeld verdenkingen te trekken. Dit alles wordt gedaan door wiskundige algoritmen te gebruiken, die een soort invoer gebruiken en deze omzetten in een ander, zeer specifiek type uitvoer. Zie HTG Explains voor meer informatie over de manier waarop codering werkt: wat is versleuteling en hoe werkt het?
-algoritmen zijn wiskundige hulpmiddelen die een verscheidenheid aan toepassingen in de informatica bieden. Ze werken op een consistente manier om een pad tussen een startpunt en een eindpunt te bieden en geven de instructies om deze te volgen. Meer weten dan wat we hebben benadrukt? Deel uw uitleg in de comments!