Acasă Finanțe personale : Costurile de calcul și următorii euristici - manechine

: Costurile de calcul și următorii euristici - manechine

Cuprins:

Video: The Third Industrial Revolution: A Radical New Sharing Economy 2024

Video: The Third Industrial Revolution: A Radical New Sharing Economy 2024
Anonim

Deseori, descoperiți că o abordare euristică, cu privire la auto-descoperire și produce rezultate suficient de utile (nu neapărat optime, dar suficient de bune) este metoda pe care trebuie să o rezolviți de fapt. Obținerea algoritmului pentru a efectua o parte din munca necesară vă economisește timp și efort pentru că puteți crea algoritmi care văd modele mai bune decât oamenii.

În consecință, auto-descoperirea este procesul de a permite algoritmului să vă arate o cale potențial utilă unei soluții (dar trebuie să mai conta pe intuiția și înțelegerea umană pentru a ști dacă soluția este cea potrivită). Următoarele secțiuni descriu tehnicile pe care le puteți utiliza pentru a calcula costul unui algoritm care utilizează euristica ca metodă de a descoperi utilitatea reală a oricărei soluții date.

Reprezentarea problemei ca spațiu

A spațiu de problemă este un mediu în care are loc o căutare a unei soluții. Un set de state și operatorii utilizați pentru a schimba aceste stări reprezintă spațiul de problemă. De exemplu, luați în considerare un joc de țiglă care are opt plăci într-un cadru 3-x-3. Fiecare piesă prezintă o parte dintr-o imagine, iar plăcile încep în ordine aleatorie, astfel încât imaginea să fie codată. Scopul este de a muta o singură țiglă în același timp pentru a plasa toate plăcile în ordinea corectă și a dezvălui imaginea.

Combinația dintre starea de start, plăcile randomizate și starea țintă - plăcile într-o anumită ordine - reprezintă instanța de problemă. Puteti reprezenta graficul folosind graficul pentru spatiul problemei. Fiecare nod al graficului spațiului problemei prezintă o stare (cele opt plăci într-o anumită poziție). Marginile reprezintă operațiuni, cum ar fi pentru a muta numărul de țigle opt în sus. Când mutați țiglă în sus, imaginea se schimbă - se mișcă într-o altă stare.

Câștigarea jocului prin trecerea de la starea de start la starea țintă nu este singurul considerent. Pentru a rezolva jocul în mod eficient, trebuie să efectuați sarcina în cel mai mic număr de mișcări posibile, ceea ce înseamnă utilizarea celui mai mic număr de operatori. Numărul minim de mișcări utilizate pentru a rezolva puzzle-ul este adâncimea de problemă.

Trebuie să ia în considerare mai mulți factori atunci când reprezintă o problemă ca spațiu. De exemplu, trebuie să luați în considerare numărul maxim de noduri care se vor potrivi în memorie, ceea ce reprezintă complexitatea spațiului. Când nu se pot potrivi toate nodurile din memorie la un moment dat, calculatorul trebuie să stocheze niște noduri în alte locații, cum ar fi unitatea hard disk, care poate încetini considerabil algoritmul.Pentru a determina dacă nodurile se vor potrivi în memorie, trebuie să țineți cont de complexitatea de timp, care este numărul maxim de noduri create pentru a rezolva problema. În plus, este important să luăm în considerare factorul de ramificare, care este numărul mediu de noduri create în graficul spațiului problemă pentru a rezolva o problemă.

A merge la întâmplare și a fi binecuvântat de noroc

Este posibilă rezolvarea unei probleme de căutare utilizând tehnici de forță brute. Avantajul acestei abordări este că nu aveți nevoie de cunoștințe specifice domeniului pentru a utiliza unul dintre acești algoritmi. Un algoritm de forță brută tinde să folosească cea mai simplă abordare posibilă pentru rezolvarea problemei. Dezavantajul este că o abordare a forței brute funcționează bine numai pentru un număr mic de noduri. Iată câțiva dintre algoritmii de căutare brute:

  • Breadth-first search: Această tehnică începe la nodul rădăcină, explorează mai întâi fiecare dintre nodurile copilului și doar apoi trece la nivelul următor. Ea progresează nivel după nivel până când găsește o soluție. Dezavantajul acestui algoritm este acela că trebuie să stocheze fiecare nod din memorie, ceea ce înseamnă că utilizează o cantitate considerabilă de memorie pentru un număr mare de noduri. Această tehnică poate verifica noduri duplicate, ceea ce economisește timp și întotdeauna vine cu o soluție.
  • Căutarea în adâncime: Această tehnică începe la nodul rădăcină și explorează un set de noduri copil conectate până când ajunge la un nod de frunze. Ea progresează ramificată după ramură până când găsește o soluție. Dezavantajul acestui algoritm este acela că nu poate verifica nodurile duplicate, ceea ce înseamnă că ar putea traversa aceleași căi de nod de mai multe ori. De fapt, acest algoritm ar putea să nu găsească deloc o soluție, ceea ce înseamnă că trebuie să definiți un punct de cutoff pentru a menține algoritmul în căutarea infinită. Un avantaj al acestei abordări este că memoria este eficientă.
  • Căutarea bidirecțională: Această tehnică caută simultan de la nodul rădăcină și nodul gol până când cele două căi de căutare se întâlnesc în mijloc. Un avantaj al acestei abordări este că este timpul eficient deoarece găsește soluția mai rapidă decât multe alte soluții de forță brute. În plus, utilizează memoria mai eficient decât alte abordări și întotdeauna găsește o soluție. Principalul dezavantaj este complexitatea punerii în aplicare, traducerea într-un ciclu de dezvoltare mai lung.

Folosind o funcție euristică și de cost

Pentru unii oameni, cuvântul euristic pare doar complicat. Ar fi la fel de ușor să spunem că algoritmul face o presupunere educată și apoi încearcă din nou atunci când nu reușește. Spre deosebire de metodele forței brute, algoritmii euristici învață. Ele folosesc, de asemenea, funcții de cost pentru a face alegeri mai bune. În consecință, algoritmii euristici sunt mai complexi, dar au un avantaj distinct în rezolvarea problemelor complexe. Ca și în cazul algoritmilor de forță brute, există mulți algoritmi euristici și fiecare vine cu un set propriu de avantaje, dezavantaje și cerințe speciale. Următoarea listă descrie câțiva dintre cei mai comuni algoritmi euristici:

  • Căutarea euristică pură: Algoritmul extinde nodurile în ordinea costului lor.Menține două liste. Lista închisă conține nodurile pe care le-a explorat deja; lista deschisă conține nodurile pe care trebuie să le exploreze încă. În fiecare iterație, algoritmul extinde nodul cu cel mai mic cost posibil. Toate nodurile copilului său sunt plasate în lista închisă și se calculează costurile nodului copil individual. Algoritmul trimite nodurile copil cu un cost redus înapoi la lista deschisă și șterge nodurile copil cu un cost ridicat. În consecință, algoritmul efectuează o căutare inteligentă, bazată pe cost, pentru soluție.
  • A * căutare: Algoritmul urmărește costul nodurilor pe măsură ce le explorează folosind ecuația: f (n) n) + h (n), unde n este identificatorul nodului.
    • g (
    • n) reprezintă costul de atingere a nodului până acum. h (
    • n) reprezintă costul estimat pentru atingerea obiectivului din nod. f (
    • n) este costul estimat al căii de la n la obiectiv. Ideea este de a căuta mai întâi căile cele mai promițătoare și de a evita căile costisitoare. Algoritmul alege întotdeauna calea cea mai apropiată de obiectiv folosind ecuația:

f

  • ( n) = (n). Acest algoritm particular poate găsi soluții destul de repede, dar poate rămâne blocat și în bucle, atât de mulți oameni nu consideră că este o abordare optimă în găsirea unei soluții.

: Costurile de calcul și următorii euristici - manechine

Alegerea editorilor

Evaluarea Vizualizărilor de date - dummies

Evaluarea Vizualizărilor de date - dummies

Vizualizările de date pot fi foarte colorate și impresionante. Dar amintiți-vă că cheia pentru crearea unor vizualizări eficiente de date nu depinde de faptul dacă este interesantă, ci mai degrabă de faptul dacă descoperă problemele reale de afaceri care trebuie abordate. O foaie de lucru vă ajută să creați propriile vizualizări de date sau să evaluați creațiile altora. Aici ...

Determinarea programului care funcționează cel mai bine pentru nevoile tale informatice

Determinarea programului care funcționează cel mai bine pentru nevoile tale informatice

Să lucreze mai bine decât celălalt. În timp, veți dezvolta un sentiment dacă Illustrator sau Photoshop se potrivesc mai bine pentru diverse sarcini. Până atunci, iată un exemplu despre modul în care fiecare program gestionează diferite elemente ale lucrării de design grafic. Graphing Photoshop nu este un program de grafic. Tu ...

Infografice nevergreen: Închirierea obiectelor Build - dummies

Infografice nevergreen: Închirierea obiectelor Build - dummies

Infografics evergreen nu sunt legate de niciun eveniment sau persoană în știri . Ele nu au o componentă sezonieră și nu sunt legate de ceva în timp util. O infographic despre cum se fac CD-urile se va aplica pentru că este vorba de muzică, dar nu este specifică nici unui artist sau gen. Cu infografiile veșnic verzi, ignorați complet evenimentele curente și explorați ideile ...

Alegerea editorilor

Utilizați Zoom în Adobe Photoshop CS5 - manechine

Utilizați Zoom în Adobe Photoshop CS5 - manechine

Adobe Creative Suite 5 oferă scurtături pentru Zooming în Photoshop. Imaginile care arată bine la un nivel de zoom pot părea extrem de proaste la altul. Veți mări și micșora destul de des în timp ce lucrați la imagini în Photoshop. Puteți găsi opțiuni de meniu pentru zoom în meniul Vizualizare; o modalitate mai rapidă de a mări este ...

Text în Photoshop CC - dummies

Text în Photoshop CC - dummies

Când editați o imagine cu text în Photoshop CC, puteți schimba linia care fluxul dvs. de tip fie folosind funcția Warp Text sau tastând pe o cale. Tipul de deformare utilizează forme predefinite la care se formează tipul dvs. (și poate fi utilizat atât cu tipul de punct, cât și cu paragraful) și tastând ...

Alegerea editorilor

Cum se adaugă Biblioteca RegEx în C ++ - dummies

Cum se adaugă Biblioteca RegEx în C ++ - dummies

Cea mai mare parte a bibliotecii Boost funcționează bine adăugând la codul aplicației. Cu toate acestea, câteva componente, cum ar fi RegEx, necesită o bibliotecă. Înainte de a putea folosi o bibliotecă, trebuie să o construiți. După ce ați construit biblioteca, trebuie să o adăugați în aplicație. Există două tehnici de adăugare a ...

Cum Heap Works în C ++ - dummies

Cum Heap Works în C ++ - dummies

Halda este un bloc amorf de memorie pe care programul C ++ îl poate accesa după cum este necesar. Aflați de ce există și cum se utilizează. Așa cum este posibil să treci un pointer la o funcție, este posibil ca o funcție să returneze un pointer. O funcție care returnează adresa ...

Cum să evitați codul de injectare în C ++ - dummies

Cum să evitați codul de injectare în C ++ - dummies

Prima regulă de evitare a codului injectat în programele C ++ , permiterea prelucrării datelor de către un interpret de limbă cu scop general. O eroare obișnuită cu SQL-injectarea este că programul acceptă intrarea utilizatorului ca și cum ar fi fost întotdeauna acceptabilă și îl inserează într-o interogare SQL pe care o trimite apoi la ...