|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programvara
  • Adobe Illustrator
  • animation Software
  • antivirusprogram
  • ljudprogram
  • Säkerhetskopiera data
  • Bränn CD-skivor
  • Bränn DVD
  • Data Compression
  • Database Software
  • Desktop Publishing
  • Desktop Video
  • Digital Video Software
  • Drupal
  • Educational Software
  • Engineering Software
  • Filtillägg Typer
  • Financial Software
  • Freeware , Shareware & Abandonware
  • GIMP
  • Graphics Software
  • Home Recording Software
  • Microsoft Access
  • Microsoft Excel
  • Microsoft Publisher
  • Microsoft Word
  • Open Source Code
  • Andra datorprogram
  • PC-spel
  • Photoshop
  • Portable Document Format
  • PowerPoint
  • presentationsprogram
  • Produktivitet Software
  • quicktime
  • Remote Desktop Management
  • SQL Server
  • Skype
  • Programvara betaversioner
  • Programvara Konsulter
  • Software Development Companies
  • Software Licensing
  • Spreadsheets
  • Skatt förberedelse programvara
  • Utility Software
  • Web Clip Art
  • Windows Media Player
  • Ordbehandlingsprogram
  • Facebook
  • Twitter
  • Instagram
  • LinkedIn
  • TikTok
  • WhatsApp
  • WordPress
  • Chrome
  • Discord
  • Amazon
  • * Dator Kunskap >> Programvara >> Säkerhetskopiera data >> Content

    Vad är tidskomplexiteten för backtrackingalgoritm?

    Tidskomplexiteten för backtracking -algoritmer är i allmänhet exponentiell , särskilt ofta uttryckt som o (b^d) , var:

    * b är grenfaktorn (antalet möjliga val vid varje beslutspunkt).

    * d är djupet i sökträdet (det maximala antalet beslut som måste fattas för att nå en lösning).

    Förklaring:

    Backtracking undersöker alla möjliga lösningar genom att systematiskt bygga upp en kandidatlösning ett steg åt gången. Vid varje steg kontrollerar den om den nuvarande kandidaten lovar (dvs om det potentiellt kan leda till en giltig lösning). Om kandidaten lovar undersöker algoritmen rekursivt ytterligare val. Om kandidaten inte lovar (en "återvändsgränd"), algoritmen * backtracks * till föregående steg och försöker ett annat val.

    Eftersom algoritmen undersöker ett träd av möjligheter, och antalet grenar kan växa snabbt, kan tidskomplexiteten bli mycket stor, särskilt när djupet `d` ökar.

    Varför exponentiellt?

    Tänk på det som en trädsökning. Om varje nod i trädet har "B" -barn (grenfaktor "B"), och trädets maximala djup är "D", kan du i värsta fall potentiellt utforska alla "B^d" -noder.

    Viktiga överväganden:

    * Worst-Case-scenario: O (b^d) tidskomplexiteten är vanligtvis ett * värsta fall * -scenario. Den faktiska runtime beror starkt på problemet och beskärningens effektivitet (hur effektivt algoritmen kan identifiera och undvika att utforska kompromiserande grenar).

    * beskärning: Bra backtracking -algoritmer använder olika beskärningstekniker för att avsevärt minska sökutrymmet. Beskärning kan dramatiskt förbättra runtime, men det förändrar inte den inneboende exponentiella naturen hos algoritmen i värsta fall.

    * Exempel: Ett klassiskt exempel är att lösa N-Queens-problemet. För att placera N -drottningar på ett NXN -schackbräde är grenfaktorn relaterad till antalet tillgängliga kolumner i rad, och djupet är relaterat till antalet rader. Den värsta tidskomplexiteten reduceras avsevärt genom att kontrollera om konflikter (attackerar drottningar) vid varje steg, vilket beskärar många av de potentiella grenarna.

    * Andra faktorer: Förutom `B` och` D` kan andra faktorer påverka runtime. Till exempel kan den tid det tar att utvärdera om en kandidatlösning lovar också vara en betydande faktor.

    * np-komplettering: Många problem som löses med backtracking är NP-komplett. Detta innebär att det tros att det inte finns någon polynom-tidsalgoritm för att lösa dem i allmänhet, och backtracking blir ofta en nödvändig (men ibland ineffektiv) tillvägagångssätt.

    Sammanfattningsvis:

    Även om backtracking kan vara en kraftfull problemlösningsteknik, betyder dess exponentiella tidskomplexitet att den är bäst lämpad för problem där:

    * Problemstorleken är relativt liten.

    * Effektiva beskärningsstrategier kan användas för att avsevärt minska sökutrymmet.

    * En ungefärlig lösning är acceptabel om den exakta lösningen är för tidskrävande för att hitta.

    Om ditt problem är stort och beskärning är ineffektivt kan du behöva överväga alternativa algoritmer eller tillnärmningstekniker.

    Tidigare:

    nästa: No
    relaterade artiklar
    ·Installera om Windows Backup
    ·Hur Radera gamla Windows Vista Backup
    ·Hur Backup mappade enheter från en XP arbetsstation
    ·Hur du tar bort Säkerhetskopiera filer i Windows 7
    ·Hur hjälper Acronis Software i dataåterställning?
    ·Återställa System State Backup Exec
    ·Varför skulle du vilja spänna om ett backupband?
    ·Hur man gör en backup disk för Fijitsu Seimans Amilo …
    ·Hur Säkerhetskopiera Boot Camp på MacOS
    ·Hur man byter en CMOS- batteri i en Libretto 50CT
    Utvalda artiklarna
    ·Konvertera DI till Flexi -filer
    ·Skillnad mellan bildkomprimering och redigering?
    ·Hur man skapar en film i GIMP
    ·Hur konverterar man från PDF till Word 2007
    ·Hur man redigerar en video Fält av en inbäddad video …
    ·Vad är programvara som är utformad för att orsaka sk…
    ·TurboCAD Constraint Tutorial
    ·Hur Kopiera och Klistra Rhythm Notation i Band in a Box…
    ·Hur att öppna mer än ett dokument i MS Word
    ·Vad är en spelprogramare?
    Copyright © Dator Kunskap https://www.dator.xyz