Vad är uttömmande sökning
Vi kan till exempel välja två mellanliggande hörn, säg b och c, och sedan bara överväga permutationer där b föregår c. Denna förbättring kan dock inte lysa upp effektivitetsbilden särskilt mycket.
Uttömmande sökning vs brute force Liksom uttömmande sökalgoritm: Uttömmande sökning är en brute-force-algoritm som systematiskt räknar upp alla möjliga lösningar på ett problem och kontrollerar var och en för att se om det är en giltig lösning. Denna algoritm används vanligtvis för problem som har ett litet och väldefinierat sökutrymme, där det är möjligt att kontrollera alla möjliga lösningar.Å andra sidan, om du alltid ser ditt glas som halvfullt, kan du hävda att det inte är något att nysa på att skära arbetet med hälften, även om du löser en liten förekomst av problemet, särskilt för hand. Observera också att om vi inte hade begränsat vår undersökning till kretsarna som börjar vid samma toppunkt, skulle antalet permutationer ha varit jämnt större, med en faktor n. Ryggsäcksproblem Här är ett annat välkänt problem inom algoritmik. Givet n föremål med kända vikter w1, w2,.
Den uttömmande sökmetoden för detta problem leder till att generera alla delmängder av uppsättningen n givna objekt, beräkna den totala vikten för varje delmängd för att identifiera genomförbara delmängder i.
uttömmande sök geeksforgeeks .Som ett exempel, lösningen på instansen av figur 3. Eftersom antalet delmängder av en n-elementmängd är 2n leder den uttömmande sökningen till en 2n-algoritm, oavsett hur effektivt enskilda delmängder genereras. Således, för både den resande säljaren och ryggsäcksproblemen som behandlas ovan, leder uttömmande sökning till algoritmer som är extremt ineffektiva på varje inmatning. Faktum är att dessa två problem är de mest kända exemplen på så kallade NP-hårda problem.
Uttömmande sökning ryggsäck problemIngen polynomtidsalgoritm är känd för någon NP-svårt problem.
Dessutom tror de flesta datavetenskapare att sådana algoritmer inte existerar, även om denna mycket viktiga gissning aldrig har bevisats. Mer sofistikerade tillvägagångssätt – backtracking och branch-and-bound se Sec-tions Alternativt kan vi använda en av många approximationsalgoritmer, till exempel de som beskrivs i avsnittet Tilldelningsproblem I vårt tredje exempel på ett problem som kan lösas genom uttömmande sökning finns det n personer som behöver tilldelas att utföra n jobb, en person per jobb.
Det vill säga varje person tilldelas exaktett jobb och varje jobb tilldelas exakt en person.
uttömmande optimering av sökmetod .Problemet är att hitta ett uppdrag med den lägsta totala kostnaden. En liten instans av detta problem följer, med tabellposterna som representerar tilldelningskostnaderna C[i, j]: Det är lätt att se att en instans av tilldelningsproblemet är helt specificerad av dess kostnad matris C. När det gäller denna matris är problemet att välja ett element i varje rad i matrisen så att alla valda element finns i olika kolumner och den totala summan av de valda elementen är den minsta möjliga. Observera att ingen uppenbar strategi för att hitta en lösning fungerar här.
Vi kan till exempel inte välja det minsta elementet i varje rad, eftersom de minsta elementen kan råka vara i samma kolumn.
Uttömmande sökexempel
Faktum är att det minsta elementet i hela matrisen inte behöver vara en komponent i en optimal lösning.
Således kan valet av den uttömmande sökningen framstå som ett oundvikligt ont. Vi kan beskriva genomförbara lösningar på uppdragsproblemet som n-tuplar j1,. För kostnadsmatrisen ovan anger till exempel 2, 3, 4, 1 tilldelningen av person 1 till jobb 2, person 2 till jobb 3, person 3 till jobb 4 och person 4 till jobb 1. Om objektet finns i uppsättningen är antalet uppsättningar som kan packas ökas och objektet tas bort från uppsättningen objekt så att det inte räknas igen.
Funktionen uppdaterar sedan det maximala antalet uppsättningar som kan packasgenom att ta maximalt av det aktuella maxantalet och antalet uppsättningar som kan packas för den aktuella uppsättningen.
Uttömmande söktidskomplexitet Uppdragsproblem 4.Övningar Många viktiga problem kräver att man hittar ett element med en särskild egenskap i en domän som växer exponentiellt eller snabbare med en instansstorlek.
Funktionen upprepar steg för alla uppsättningar i listan över uppsättningar. När alla uppsättningar har bearbetats returnerar funktionen det maximala antalet uppsättningar som kan packas som resultat. Programmets huvudfunktion skapar en uppsättning objekt och en lista med uppsättningar och anropar sedan funktionen maxPackedSets för att hitta det maximala antalet uppsättningar som kan packas in i den givna uppsättningen objekt.
Resultatet av funktionen maxPackedSets skrivs ut till konsol, vilket anger det maximala antalet uppsättningar som kan packas. Således använder koden algoritmen för uttömmande sökning för att systematiskt räkna upp och kontrollera alla uppsättningar i listan över uppsättningar för att hitta det maximala antalet uppsättningar som kan packas in i den givna uppsättningen objekt.