Hem Personliga finanser Arbetar med algoritmiska funktioner - dummies

Arbetar med algoritmiska funktioner - dummies

Video: Kenneth Cukier: Big data is better data 2024

Video: Kenneth Cukier: Big data is better data 2024
Anonim

En funktion i matematik är helt enkelt ett sätt att kartlägga några ingångar till ett svar. Uttryckt på ett annat sätt är en -funktion en transformation (baserat på matematikoperationer) som omvandlar (kartlägger) inmatningen till ett svar.

För vissa värden för inmatning (vanligtvis betecknad med bokstäverna x eller n) har du ett motsvarande svar med matematiken som definierar funktionen. Exempelvis anger en funktion som f (n) = 2 n att när ditt ingång är ett tal n, är ditt svar är talet n multiplicerat med 2.

Med hjälp av storleken på inmatningen är det meningsfullt med tanke på att det här är en tidskritisk ålder och människors liv är proppade med en växande mängd data. Att göra allt en matematisk funktion är lite mindre intuitiv, men en funktion som beskriver hur en algoritm relaterar sin lösning till den mängd data den tar emot är något du kan analysera utan specifikt hårdvaru- eller mjukvaruunderstöd. Det är också lätt att jämföra med andra lösningar, med tanke på storleken på ditt problem. Analys av algoritmer är verkligen ett tankegångskoncept eftersom det reducerar en komplex serie av steg till en matematisk formel.

För det mesta är en analys av algoritmer inte ens intresserad av att definiera funktionen exakt. Vad du verkligen vill göra är att jämföra en målfunktion med en annan funktion. Dessa jämförelsefunktioner förekommer inom en uppsättning föreslagna funktioner som utför dåligt i motsats till målalgoritmen. På så sätt behöver du inte ansluta tal till funktioner med större eller mindre komplexitet. I stället handlar du om enkla, färdiga och välkända funktioner. Det kan låta grovt, men det är mer effektivt och liknar att klassificera algoritmens prestanda i kategorier, i stället för att få en exakt prestandamätning.

Satsen av generaliserade funktioner kallas Big O notation, och du stöter ofta på den här lilla uppsättningen funktioner (läggs i parentes och föregås av en huvudstad O >) används för att representera algoritmernas prestanda. Figuren visar analysen av en algoritm. Ett kartesiskt koordinatsystem kan representera sin funktion, mätt med RAM-simulering, där abscissa (x-koordinaten) är storleken på ingången och ordinate (y-koordinaten) är dess resulterande antal operationer. Du kan se tre kurvor representerade. Inmatningsstorlek betyder. Kvaliteten är dock också viktig (till exempel när du beställer problem är det snabbare att beställa en inmatning som redan är nästan beställd).Följaktligen visar analysen ett värsta fall, f 1 (n), ett genomsnittfall, f 2 (n) och ett bästa fall, f 3 (n). Även om det genomsnittliga fallet kan ge dig en allmän uppfattning, är det som du verkligen bryr dig om, det värsta fallet, eftersom det kan uppstå problem när din algoritm kämpar för att nå en lösning. Big O-funktionen är den som efter ett visst värde

n0 (tröskeln för att överväga en stor ingång) resulterar alltid i ett större antal operationer med samma ingång än värsta fallfunktionen > f1 . Således är Big O-funktionen ännu mer pessimistisk än den som representerar din algoritm, så oavsett kvaliteten på inmatningen kan du vara säker på att saker inte kan bli värre än det. Komplexiteten hos en algoritm vid bästa, genomsnittliga och värsta inmatningsfall. Många möjliga funktioner kan leda till sämre resultat, men valet av funktioner som erbjuds av Big O-notationen som du kan använda är begränsade eftersom dess syfte är att förenkla komplexitetsmätningen genom att föreslå en standard. Följaktligen innehåller detta avsnitt bara de få funktioner som ingår i Big O notationen. Följande lista beskriver dem i växande ordning av komplexitet:

Konstant komplexitet O (1):

Samma tid, oavsett hur mycket input du tillhandahåller. I slutändan är det ett konstant antal operationer, oavsett hur länge ingångsdata är. Denna nivå av komplexitet är ganska sällsynt i praktiken.

  • Logaritmisk komplexitet O (log n): Antalet operationer växer långsammare än ingången, vilket gör algoritmen mindre effektiv med små ingångar och effektivare med större. En typisk algoritm för denna klass är binärsökningen.
  • Linjär komplexitet O (n): Verksamheten växer med ingången i ett 1: 1-förhållande. En typisk algoritm är iteration, vilket är när du skannar inmatning en gång och tillämpar en operation på varje element av det.
  • Linearitmisk komplexitet O (n log n): Komplexitet är en blandning mellan logaritmisk och linjär komplexitet. Det är typiskt för vissa smarta algoritmer som används för att beställa data, till exempel Mergesort, Heapsort och Quicksort.
  • Kvadratisk komplexitet O (n 2
  • ): Verksamheten växer som en kvadrat av antalet ingångar. När du har en iteration inuti en annan iteration (kapslade iterationer, i datavetenskap), har du kvadratisk komplexitet. Du har till exempel en lista över namn och för att hitta de mest liknande, jämför du varje namn mot alla andra namn. Några mindre effektiva beställningsalgoritmer presenterar sådan komplexitet: bubbelsort, urvalssort och insertionssort. Denna nivå av komplexitet innebär att dina algoritmer kan springa i timmar eller till och med dagar innan de når en lösning. Kubisk komplexitet O (n 3
  • ): Operationerna växer ännu snabbare än kvadratisk komplexitet eftersom nu har du flera nestade iterationer. När en algoritm har denna ordning med komplexitet och du behöver bearbeta en blygsam mängd data (100 000 element), kan din algoritm löpa i flera år.När du har ett antal operationer som är en kraft för ingången är det vanligt att referera till algoritmen som som körs i polynomaltid. Exponentiell komplexitet O (2 n
  • ): Algoritmen tar dubbelt så många tidigare operationer för varje nytt element som läggs till. När en algoritm har denna komplexitet kan även små problem ta evigt. Många algoritmer som gör uttömmande sökningar har exponentiell komplexitet. Det klassiska exemplet för denna nivå av komplexitet är emellertid beräkningen av Fibonacci-nummer. Faktisk komplexitet O (n!): En riktig mardröm av komplexitet på grund av det stora antalet möjliga kombinationer mellan elementen. Tänk dig: Om din ingång är 100 objekt och en operation på din dator tar 10
  • -6 sekunder (en rimlig hastighet för varje dator, nuförtiden) behöver du cirka 10 140 år för att slutföra uppgiften framgångsrikt (en omöjlig tid sedan universums ålder uppskattas vara 10 14 år). Ett känt problem med problemkomplexiteten är det resande säljareproblemet, där en säljare måste hitta den kortaste vägen för att besöka många städer och komma tillbaka till startstaden.
Arbetar med algoritmiska funktioner - dummies

Redaktörens val

Jewish Funeral Traditions - dummies

Jewish Funeral Traditions - dummies

Judiska begravningar sker vanligen i en synagoge, begravningshem eller på en kyrkogård. Med tradition är judiska begravningar enkla (symboliserar tron ​​att människor är alla lika i döden), men de varierar mycket och har ingen uppsättning liturgi. Att skicka blommor till ett begravnings- eller sorgshem är starkt avskräckt i judendomen. Inte bara kommer ...

Identifiera komplicerade grävande dummies

Identifiera komplicerade grävande dummies

Komplicerat roende är det tekniska namnet som sorgproffs ger till en sorgprocess som sitter fast vid något tillfälle , vilket gör det omöjligt för de förlorade att framgångsrikt starta eller avsluta sorgprocessen. Komplicerat sorg är ofta ett tecken på olösta problem i förhållandet mellan de förlorade och den avlidne som gör det ...

Redaktörens val

Hur man ställer in kartkontroller i Main_iPad. Storyboard i din iOS App - dummies

Hur man ställer in kartkontroller i Main_iPad. Storyboard i din iOS App - dummies

När du har en anpassad vy för MapController i din iOS-app, måste du berätta för iPad-storyboardet att du laddar in din anpassade vy i stället för en UIViewController. Följ dessa steg: Välj Projekt navigator genom att välja Main_iPad. storyboard och välj sedan View Controller i View Controller - Map Scene i dokumentutskriften. ...

Hur man roterar objekt i din iOS-app - dummies

Hur man roterar objekt i din iOS-app - dummies

Här hittar du hur man rotera en vy (i så fall vrid bilen runt) i din iOS-app. För att göra det uppdaterar du den roterande kodstuben du startade med och ersätter den med den fetstilta koden. - (void) rotera {CGAffineTransform transform = CGAffineTransformMakeRotation (M_PI); void (^ animation) () = ^ () {self. bil. transformera = transformera; ...

Hur man ställer in en WeatherController i Main_iPad. storyboard-fil för din iOS-app - dummies

Hur man ställer in en WeatherController i Main_iPad. storyboard-fil för din iOS-app - dummies

Bör du lägga till en ny anpassad vykontroll till din iOS-app innan du fortsätter till dessa steg. Du behöver fortfarande berätta för storyboardet att du vill att den ska ladda den nya anpassade vykontrollen istället för en UIViewController. Följ dessa steg:

Redaktörens val

Spara en grafisk stil i Adobe CS5 Illustrator - dummies

Spara en grafisk stil i Adobe CS5 Illustrator - dummies

Adobe Creative Suite 5 (Adobe CS5) Illustrator tillåter Du sparar en grafisk stil. En grafisk stil är en kombination av alla inställningar du väljer för ett visst filter eller en effekt i Utseendepanelen. Genom att spara informationen i en grafisk stil lagras du dessa attribut så att du snabbt och enkelt kan tillämpa ...

Välj som ett transformationsverktyg i Adobe CS5 Illustrator - dummies

Välj som ett transformationsverktyg i Adobe CS5 Illustrator - dummies

I Adobe Creative Suite 5 (Adobe CS5 ) Illustratör du kan använda markeringsverktyget för att skala och rotera ett valt objekt. Dra begränsningsboxens handtag för att ändra storlek på objektet, eller flytta dig utanför ett handtag och sedan, när markören ändras till en flippig pil (en böjd pil med pilhuvud i båda ändarna), dra till ...

Objekttransformation i Adobe CS5 Illustrator - dummies

Objekttransformation i Adobe CS5 Illustrator - dummies

Verktygen Rotate, Reflect, Scale och Shear i Adobe Creative Suite 5 (Adobe CS5) Illustrator använder alla samma grundläggande steg för att utföra transformationer. Här är fem sätt att transformera ett objekt: en för en godtycklig omvandling och fyra andra för exakta omvandlingar baserat på en numerisk mängd som du anger. Vilkårlig omvandlingsmetod Eftersom detta ...