Huis Persoonlijke financiën Algoritmen: berekeningskosten en volgende heuristieken - dummies

Algoritmen: berekeningskosten en volgende heuristieken - dummies

Inhoudsopgave:

Video: Zo bepalen algoritmes jouw wereldbeeld | NOS op 3 2024

Video: Zo bepalen algoritmes jouw wereldbeeld | NOS op 3 2024
Anonim

Vaak ziet u dat een heuristische benadering, een die vertrouwt over zelfontdekking en produceert voldoende bruikbare resultaten (niet noodzakelijk optimaal, maar goed genoeg) is de methode die je echt nodig hebt om een ​​probleem op te lossen. Door het algoritme een deel van het vereiste werk voor u te laten uitvoeren, bespaart u tijd en moeite, omdat u algoritmen kunt maken die patronen beter zien dan mensen.

Bijgevolg is zelfontdekking het proces waarbij het algoritme je een potentieel bruikbaar pad naar een oplossing laat zien (maar je moet nog steeds rekenen op menselijke intuïtie en begrip om te weten of de oplossing de juiste is). In de volgende secties worden technieken beschreven die u kunt gebruiken om de kosten van een algoritme te berekenen met behulp van heuristiek als een methode om de werkelijke bruikbaarheid van een bepaalde oplossing te ontdekken.

Het probleem representeren als een ruimte

A probleemruimte is een omgeving waarin een zoekactie naar een oplossing plaatsvindt. Een reeks toestanden en de operatoren die worden gebruikt om die toestanden te veranderen, representeren de probleemruimte. Overweeg bijvoorbeeld een tegeldoos met acht tegels in een frame van 3 x 3. Elke tegel toont een deel van een afbeelding en de tegels beginnen in een willekeurige volgorde, zodat de afbeelding vervormd is. Het doel is om één tegel tegelijk te verplaatsen om alle tegels in de juiste volgorde te plaatsen en de afbeelding te tonen.

De combinatie van de startstatus, de gerandomiseerde tegels en de doelstatus - de tegels in een bepaalde volgorde - is de probleeminstantie. U kunt de puzzel grafisch weergeven met behulp van een grafiek met probleemruimten. Elk knooppunt van de grafiek met probleemruimten geeft een staat weer (de acht tegels in een bepaalde positie). De randen vertegenwoordigen bewerkingen, zoals tegelnummer acht naar boven verplaatsen. Als u tegel 8 naar boven verplaatst, verandert de afbeelding - deze gaat naar een andere staat.

Het winnen van het spel door van de startstatus naar de doeltoestand te gaan is niet de enige overweging. Om het spel efficiënt op te lossen, moet u de taak uitvoeren in het kleinste aantal mogelijke zetten, wat betekent dat u het kleinste aantal operatoren gebruikt. Het minimale aantal zetten dat wordt gebruikt om de puzzel op te lossen, is de probleemdiepte.

U moet rekening houden met verschillende factoren bij het weergeven van een probleem als een spatie. U moet bijvoorbeeld rekening houden met het maximale aantal knooppunten dat in het geheugen past, wat de ruimtecomplexiteit vertegenwoordigt. Als u niet alle knooppunten tegelijkertijd in het geheugen kunt plaatsen, moet de computer bepaalde knooppunten op andere locaties opslaan, zoals de vaste schijf, waardoor het algoritme aanzienlijk kan vertragen.Als u wilt bepalen of de knooppunten in het geheugen passen, moet u rekening houden met de tijdcomplexiteit, het maximumaantal knooppunten dat is gemaakt om het probleem op te lossen. Daarnaast is het belangrijk om de vertakkingsfactor te beschouwen, wat het gemiddelde aantal knooppunten is dat in de grafiek met probleemruimten is gemaakt om een ​​probleem op te lossen.

Willekeurig en gezegend door geluk

Het oplossen van een zoekprobleem met brute-force technieken is mogelijk. Het voordeel van deze aanpak is dat u geen domeinspecifieke kennis nodig hebt om een ​​van deze algoritmen te gebruiken. Een brute-force-algoritme heeft de neiging om de eenvoudigst mogelijke aanpak voor het oplossen van het probleem te gebruiken. Het nadeel is dat een brute-force benadering alleen goed werkt voor een klein aantal knooppunten. Hier zijn enkele van de algemene brute-force zoekalgoritmen:

  • Breedste eerst zoeken: Deze techniek begint bij het wortelknooppunt, onderzoekt elk van de onderliggende knooppunten eerst en gaat dan pas naar het volgende niveau. Het gaat niveau voor niveau verder totdat het een oplossing vindt. Het nadeel van dit algoritme is dat het elk knooppunt in het geheugen moet opslaan, wat betekent dat het een aanzienlijke hoeveelheid geheugen gebruikt voor een groot aantal knooppunten. Deze techniek kan controleren op dubbele knooppunten, wat tijd bespaart, en het komt altijd met een oplossing.
  • Diepte-eerste zoekopdracht: Deze techniek begint bij het basisknooppunt en onderzoekt een reeks verbonden onderliggende knooppunten totdat deze een knooppunt van bladeren bereikt. Het vordert van tak tot tak tot het een oplossing vindt. Het nadeel van dit algoritme is dat het niet op dubbele knooppunten kan controleren, wat betekent dat het meerdere knooppunten meerdere malen kan doorlopen. In feite vindt dit algoritme mogelijk helemaal geen oplossing, wat betekent dat u een afkappunt moet definiëren om te voorkomen dat het algoritme oneindig zoekt. Een voordeel van deze aanpak is dat het geheugen efficiënt is.
  • Bidirectioneel zoeken: Deze techniek zoekt gelijktijdig van het basisknooppunt en het doelknooppunt tot de twee zoekpaden elkaar in het midden ontmoeten. Een voordeel van deze aanpak is dat het tijd efficiënt is omdat het de oplossing sneller vindt dan vele andere brute-force oplossingen. Bovendien gebruikt het geheugen efficiënter dan andere benaderingen en vindt het altijd een oplossing. Het grootste nadeel is de complexiteit van de implementatie, die zich vertaalt in een langere ontwikkelingscyclus.

Een heuristische en een kostenfunctie gebruiken

Voor sommige mensen klinkt het woord heuristiek gewoon ingewikkeld. Het zou net zo gemakkelijk zijn om te zeggen dat het algoritme een goede inschatting maakt en het vervolgens opnieuw probeert wanneer het faalt. In tegenstelling tot brute-force-methoden leren heuristische algoritmen. Ze gebruiken ook kostenfuncties om betere keuzes te maken. Bijgevolg zijn heuristische algoritmen complexer, maar ze hebben een duidelijk voordeel bij het oplossen van complexe problemen. Net als bij brute force-algoritmen zijn er veel heuristische algoritmen en elk heeft zijn eigen reeks voordelen, nadelen en speciale vereisten. De volgende lijst beschrijft enkele van de meest voorkomende heuristische algoritmen:

  • Pure heuristiek zoeken: Het algoritme breidt knooppunten uit in volgorde van hun kosten.Het onderhoudt twee lijsten. De gesloten lijst bevat de knooppunten die al zijn onderzocht; de open lijst bevat de knooppunten die het nog moet verkennen. In elke iteratie breidt het algoritme het knooppunt uit met de laagst mogelijke kosten. Alle onderliggende knooppunten worden in de gesloten lijst geplaatst en de kosten van de afzonderlijke kindknooppunten worden berekend. Het algoritme stuurt de onderliggende knooppunten met lage kosten terug naar de open lijst en verwijdert de onderliggende knooppunten met hoge kosten. Bijgevolg voert het algoritme een intelligente, op kosten gebaseerde zoekopdracht naar de oplossing uit.
  • A * zoeken: het algoritme volgt de kosten van knooppunten terwijl het ze onderzoekt met behulp van de vergelijking: f (n) = g (n) + h (n), waarbij
    • n de knooppunt-ID is.
    • g (n) zijn de kosten om het knooppunt tot nu toe te bereiken.
    • h (n) zijn de geschatte kosten om het doel van het knooppunt te bereiken.
    • f (n) zijn de geschatte kosten van het pad van n naar het doel.

Het idee is om eerst de meest veelbelovende paden te doorzoeken en dure paden te vermijden. Greedy best-first search:

  • Het algoritme kiest altijd het pad dat het dichtst bij het doel ligt met behulp van de vergelijking: f (n) = h
Algoritmen: berekeningskosten en volgende heuristieken - dummies

Bewerkers keuze

Setup Menu 3 op de Rebel T6i / 750D - dummies

Setup Menu 3 op de Rebel T6i / 750D - dummies

Er wachten nogal wat aanpassingsmogelijkheden op de Setup-menu van de Rebel T6i / 750D 3. Setup-menu 3, weergegeven in de volgende afbeelding, bevat de volgende aanpassingsmogelijkheden: Schermkleur: standaard bevat het scherm Opname-instellingen opnamegegevens in het wit op een eenvoudige zwarte achtergrond. Er worden grijstinten in grijstinten gebruikt en accenten worden meestal oranje gemarkeerd. ...

Bewerkers keuze

Tekst invoeren en in een PowerPoint-dia passen - dummies

Tekst invoeren en in een PowerPoint-dia passen - dummies

Tekst aan een inhoud toevoegen tijdelijke aanduiding in Microsoft PowerPoint, klik op het gebied Klik om tekst toe te voegen en typ wat u wilt. Als u een ander type inhoud wilt toevoegen, klikt u op het pictogram in de tijdelijke aanduiding voor het gewenste type. Als u meer tekst typt dan in dat tekstvak past (vooral gebruikelijk voor ...

Voor senioren: de Prullenbak van uw computer leegmaken - dummies

Voor senioren: de Prullenbak van uw computer leegmaken - dummies

De Prullenbak op uw computer bevat onlangs verwijderde items. Uw oude bestanden bevinden zich in de Prullenbak en u kunt ze ophalen totdat u deze leegt of totdat deze de maximale maximale grootte heeft bereikt, en Windows automatisch enkele bestanden dumpt. Nadat u de Prullenbak hebt leeggemaakt, zijn alle bestanden daarin niet beschikbaar voor ...

Hoe tekst in te voeren in een Microsoft Office-document - dummies

Hoe tekst in te voeren in een Microsoft Office-document - dummies

Nadat u een document hebt gemaakt, bent u klaar om te beginnen met typen. Tekst op de pagina plaatsen (of op het scherm) is een beetje anders in elk van de drie grote Microsoft Office-toepassingen: Word, Excel en PowerPoint. Woord: Het belangrijkste werkgebied van het programma is een lege lei waarop u rechtstreeks kunt typen. Klik gewoon in de ...

Bewerkers keuze

Animatie maken met de HTML5-canvastag - dummies

Animatie maken met de HTML5-canvastag - dummies

Hoewel de HTML5-canvastag misschien niet als vervanging voor Flash als mechanisme voor het implementeren van games en animaties in de browser, is het redelijk eenvoudig om animaties aan een canvasafbeelding toe te voegen. De sleutel is om de animatiefuncties te gebruiken die al in de browser zijn ingebouwd. Basisstructuur van de animatielus in HTML5-canvas Een animatie ...

Hoe externe stijlen maken in CSS3 - dummies

Hoe externe stijlen maken in CSS3 - dummies

De meeste ontwikkelaars gebruiken externe stijlen in CSS3 om te verkleinen de hoeveelheid werk die nodig is om een ​​site te onderhouden. Een. CSS-bestand bevat alle stijlen voor de site, wat betekent dat het veranderen van een stijl voor de hele site net zo eenvoudig is als het veranderen van dat ene bestand (in plaats van elke pagina). Omdat de wijziging plaatsvindt in slechts ...

Hoe u volledige interactieve CSS3-toepassingen maakt met YUI - dummies

Hoe u volledige interactieve CSS3-toepassingen maakt met YUI - dummies

De Yahoo! Gebruikersinterface (YUI) -bibliotheek (Yuilibrary) is een complete ontwikkeling - API verwant met jQuery en jQuery UI CSS3 gecombineerd in sommige opzichten en rijker dan deze bibliotheken in andere. Dit is een complexe API die is ontworpen om aan de behoeften van grotere applicaties te voldoen. Eigenlijk moet je echt de tutorials doorlopen, ...