Acasă Finanțe personale Pentru manechin Cheie Sheet - manechine

Pentru manechin Cheie Sheet - manechine

Video: ?Introducere in Structuri de Date si Algoritmi | Concepte de Programare #1 2024

Video: ?Introducere in Structuri de Date si Algoritmi | Concepte de Programare #1 2024
Anonim

De John Paul Mueller, Luca Massaron

Algoritmii nu trebuie să fie plictisitori sau greu de folosit. De fapt, algoritmii te înconjoară în multe feluri pe care probabil nu ți-ai gândit și le folosești în fiecare zi pentru a-ți îndeplini sarcini importante. Cu toate acestea, trebuie să puteți utiliza algoritmi fără a trebui să deveniți matematician.

Limbile de programare vă permit să descrieți pașii utilizați pentru a crea un algoritm. Unele limbi sunt mai bune decât altele pentru a îndeplini această sarcină într-un mod care oamenii pot înțelege fără a deveni oameni de știință în domeniul informaticii. Python face folosirea algoritmilor mai ușoară deoarece vine cu o mulțime de suport încorporat și extins (prin utilizarea pachetelor, seturilor de date și a altor resurse). Acest Cheat Sheet vă ajută să accesați cele mai frecvent necesare sfaturi pentru a face utilizarea algoritmilor rapid și ușor.

Localizarea algoritmului de care aveți nevoie

Următorul tabel descrie algoritmi și tipurile de algoritmi pe care le puteți găsi pentru diferite tipuri de analize de date. (Puteți găsi discuții despre toți acești algoritmi în Algoritmi pentru Dummies.)

Algoritm Descriere Link util
A * Caută Algoritmul urmărește costul nodurilor pe măsură ce le explorează folosind ecuația: f (n) = g (n) + h (n) -

n

este identificatorul nodului g (n)

este costul de atingere a nodului până acum h (n) obiectivul de la nod

f (n)

este costul estimat al căii de la n la obiectivul Ideea este de a căuta mai întâi căile cele mai promițătoare și de a evita căile costisitoare.

Standford. edu

Arbore echilibrat
Un fel de arbore care păstrează o structură echilibrată prin reorganizare, astfel încât să poată oferi timpi de acces redus. Numărul de elemente din partea stângă diferă de cel din partea dreaptă cu cel mult unul. Webdocs 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 implementării. Planificare. cs Arbore binar
Acesta este un tip de copac care conține noduri care se conectează la zero (noduri frunze), unul sau două (noduri ramificative) alte noduri. Fiecare nod definește cele trei elemente pe care trebuie să le includă pentru a asigura conectivitatea și stocarea datelor: stocarea datelor, conectarea la stânga și conexiunea la dreapta. cs. CMU. edu 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. Academia Khan Brute Force
Aceasta este o tehnică de rezolvare a problemelor în care cineva încearcă orice soluție posibilă, căutând cea mai bună soluție de problemă. Tehnicile de forță brută garantează o soluție potrivită atunci când există, dar sunt atât de consumatoare de timp încât majoritatea oamenilor să le evite. Igm. univ Depth-First Search
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 mai mult decât o dată. 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ă. Hacker Earth Împărțire și cucerire
Aceasta este o tehnică de rezolvare a problemelor în care problema este ruptă în cele mai mici piese posibile și rezolvată folosind cea mai simplă abordare posibilă. Această tehnică economisește timp și resurse considerabile în comparație cu alte abordări, cum ar fi forța bruta. Cu toate acestea, nu garantează întotdeauna un rezultat optim. Academia Khan Dijikstra
Acesta este un algoritm folosit pentru găsirea celei mai scurte căi într-un grafic reglat, ponderat (având ponderi pozitive). Geeks pentru geeks Graph
Un grafic este un fel de extensie de copac. Ca și în cazul copacilor, aveți noduri care se conectează reciproc pentru a crea relații. Cu toate acestea, spre deosebire de arborii binari, un grafic poate avea mai mult de una sau două conexiuni. De fapt, nodurile grafice au adesea o multitudine de conexiuni. Veți vedea grafice utilizate în locuri precum hărți pentru GPS și tot felul de alte locuri pentru care abordarea de sus în jos a unui copac nu va funcționa. Tutoriale Algoritmi greoi
Această tehnică a soluționării problemelor în care soluția se bazează pe cel mai bun răspuns pentru fiecare etapă a procesului de rezolvare a problemelor. În general, algoritmii grei fac două ipoteze:

Este posibilă alegerea optimă la un anumit pas.

Alegerea opțiunii optime la fiecare pas este posibilă găsirea unei soluții optime pentru problema generală.

Tutoriale

Greed Best-First Search (BFS)
Algoritmul alege întotdeauna calea cea mai apropiată de obiectiv utilizând 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. Centurion2 Hashing Aceasta este o metodă de predicție a locației unui anumit element de date în structura de date (indiferent de structura care ar putea fi) înainte de ao căuta. Această abordare se bazează pe utilizarea cheilor plasate într-un index. O funcție hash transformă cheia într-o valoare numerică pe care algoritmul o plasează într-o tabelă hash. O tabelă hash oferă mijloacele de a crea un index care indică elemente dintr-o structură de date, astfel încât un algoritm să poată prezice cu ușurință locația datelor. Tutoriale
Heap Acesta este un copac sofisticat care permite inserarea datelor în structura copacilor. Utilizarea inserării datelor face ca sortarea să fie mai rapidă. Puteți clasifica mai departe acești arbori ca grămezi și grămezi min, în funcție de capacitatea arborelui de a furniza imediat valoarea maximă sau minimă prezentă în arbore. Tutoriale
Euristica Aceasta este o tehnică de rezolvare a problemelor care se bazează pe auto-descoperire și produce rezultate suficient de utile (nu neapărat optime, dar suficient de bune) t necesar. Auto-descoperirea este procesul de a permite algoritmului să vă arate o cale potențial utilă unei soluții (dar trebuie să vă bazați pe intuiția și înțelegerea umană pentru a afla dacă soluția este cea potrivită). Northwest. edu
MapReduce Acesta este un cadru pentru a face algoritmii să funcționeze utilizând calculi în paralel (folosind mai multe computere conectate împreună într-o rețea), permițând algoritmilor să își finalizeze soluțiile mai repede. Hadoop Apache
Mergesort Mergesort este o metodă generală de comparare a datelor de sortare. Depinde de o abordare divizată și cucerită pentru îndeplinirea misiunii sale. Geeks pentru geeks
Nash Equilibrium Aceasta este o teorie a jocului în care ceilalți jucători cunosc strategia de echilibru pentru ceilalți jucători, astfel încât nimeni nu are nimic de câștigat prin schimbarea strategiei sale personale. Această teorie este folosită în orice situație ostilă în care jucătorul trebuie să țină seama de deciziile luate de toți ceilalți jucători pentru a câștiga jocul. Academia Khan
PageRank PageRank este un algoritm pentru măsurarea importanței unui nod într-un grafic. Acest algoritm se află la baza algoritmilor principali ai Google pentru alimentarea căutărilor relevante către utilizatori. Princeton. edu
Căutarea euristică pură Acest algoritm extinde nodurile în ordinea costului lor. Menține două liste. Lista închisă conține nodurile pe care le-a explorat deja, iar lista deschisă conține nodurile pe care trebuie să le exploreze în continuare. Î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. World of Computing
Quicksort Aceasta este o strategie de sortare generala bazata pe matrice de partitionare a datelor in array-uri mai mici.Depinde de o abordare divizată și cucerită pentru îndeplinirea misiunii sale. Tutoriale
Arbore dezechilibrat Acesta este un arbore care plasează noi elemente de date ori de câte ori este necesar în arbore, fără a ține seama de echilibru. Această metodă de adăugare a elementelor face să crească copacul mai rapid, dar reduce viteza de acces la căutare sau sortare. Quora
Diferențierea algoritmilor de la alte structuri matematice Dacă sunteți ca majoritatea oamenilor, adesea vă aflați zgâriind capul atunci când vine vorba de structurile de matematică, deoarece nimeni nu pare să știe să folosească termenii în mod corect. Este ca și cum oamenii încearcă să facă lucrurile greu! La urma urmei, ce este o ecuație și de ce este diferit de un algoritm? Ei bine, nu vă mai temeți: Următorul tabel oferă ghidul definitiv pentru structurile de matematică pe care ați putea să-l întâlniți, dar cărora le-a fost frică să întrebați. Structura

Descriere

Ecuația

Numerele și simbolurile care, luate în ansamblu, sunt egale cu o valoare specifică. O ecuație conține întotdeauna un semn egal, astfel încât să știți că numerele și simbolurile reprezintă valoarea specifică de cealaltă parte a semnalului egal. Ecuațiile conțin în general informații variabile prezentate ca simbol, dar nu li se cere să utilizeze variabile. Formula
O combinație de numere și simboluri utilizate pentru a exprima informații sau idei. O formulă prezintă în mod normal concepte matematice sau logice, cum ar fi definirea celui mai mare divizor general (GCD) a două numere întregi (video de la Academia Khan spune cum funcționează acest lucru). În general, o formulă arată relația dintre două sau mai multe variabile. Majoritatea oamenilor văd o formulă ca un fel de ecuație specială. Algoritm
O secvență de pași folosiți pentru a rezolva o problemă. Secvența prezintă o metodă unică de abordare a problemei oferind o soluție particulară. Un algoritm nu trebuie să reprezinte concepte matematice sau logice, chiar dacă prezentările din această carte adesea cad în această categorie, deoarece oamenii folosesc cel mai frecvent algoritmi în acest mod. Unele formule speciale sunt, de asemenea, algoritmi, cum ar fi formula patratică. Pentru ca un proces să reprezinte un algoritm, acesta trebuie să fie următorul: Finite:
Algoritmul trebuie să rezolve eventual problema. Definiți bine:

Seria de pași trebuie să fie precisă și să prezinte pași care să fie ușor de înțeles, mai ales prin computere, care trebuie să poată crea un algoritm util. Eficace:

Un algoritm trebuie să rezolve toate cazurile de problemă pentru care cineva la definit. Un algoritm trebuie să rezolve întotdeauna problema pe care trebuie să o rezolve. Chiar dacă ar trebui să anticipați unele eșecuri, incidența eșecului este rară și apare numai în situații care sunt acceptabile pentru utilizarea algoritmului dorit. Moduri uimitoare de a utiliza algoritmi

Oamenii folosesc de fapt algoritmi tot timpul. De exemplu, crearea de pâine prăjită este un exemplu de algoritm, așa cum este explicat în acest post pe blog. Efectuarea toastului nu este un algoritm uimitor, dar cele din tabelul următor, care utilizează un computer pentru a efectua sarcini, sunt. Sarcina

De ce este uimitor

Cryptography

Păstrarea datelor în siguranță este o luptă continuă cu hackerii care atacă în mod constant sursele de date. Algoritmii vă permit să analizați datele, să le puneți într-o altă formă și să le returnați mai târziu în forma lor originală. Analiza grafică
Capacitatea de a decide cu privire la cea mai scurtă linie între două puncte găsește tot felul de utilizări. De exemplu, într-o problemă de rutare, GPS-ul dvs. nu ar putea funcționa fără acest algoritm special, deoarece nu v-ar putea orienta de-a lungul străzilor orașului folosind cel mai scurt traseu de la punctul A la punctul B. Generarea de numere pseudorandom
Imaginați-vă jocurile care nu a variat niciodată. Începeți din același loc și efectuați aceiași pași în același mod de fiecare dată când jucați. Plictisitor! Fără capacitatea de a genera numere aparent aleatorii, multe sarcini de calculator devin inutile sau imposibile. Planificarea
Utilizarea corectă a resurselor pentru toți cei interesați este un alt mod în care algoritmii își fac cunoscuți prezența într-un mod mare. De exemplu, luminile de sincronizare la intersecții nu mai sunt simple dispozitive care numără secundele dintre schimbările de lumină. Dispozitivele moderne iau în considerare tot felul de probleme, cum ar fi timpul zilei, condițiile meteorologice și fluxul de trafic. Programarea vine în mai multe forme. Luați în considerare modul în care computerul dvs. execută mai multe sarcini simultan. Fără un algoritm de programare, sistemul de operare ar putea atrage toate resursele disponibile și va împiedica lucrarea dvs. să facă orice lucru util. Căutarea
Localizarea informațiilor sau verificarea faptului că informațiile pe care le vedeți sunt informațiile pe care le doriți este o sarcină esențială. Fără această capacitate, multe dintre sarcinile pe care le efectuați online nu ar fi posibile, cum ar fi găsirea site-ului de pe Internet care vinde oala de cafea perfectă pentru biroul dvs. Sortarea
Determinarea ordinii de prezentare a informațiilor este importantă deoarece majoritatea oamenilor suferă astăzi de supraîncărcarea informațiilor și trebuie să reducă inflația datelor. Imaginați-vă că mergeți la Amazon, găsiți spre vânzare mai mult de o mie de vase de cafea, dar nu le puteți sorta în funcție de preț sau de cea mai mare revizuire pozitivă. Mai mult, mulți algoritmi complexi necesită date în ordinea corectă de a lucra în mod fiabil, astfel că sortarea este o necesitate importantă pentru rezolvarea mai multor probleme. Transformarea
Conversia unui tip de date într-un alt tip de date este esențială pentru înțelegerea și utilizarea eficientă a datelor. De exemplu, s-ar putea să înțelegeți greutățile imperiale, dar toate sursele dvs. utilizează sistemul metric. Convertirea între cele două sisteme vă ajută să înțelegeți datele. De asemenea, transformarea rapidă Fourier (FFT) convertește semnalele între domeniul de timp și domeniul de frecvență, permițând lucruri precum router-ul WiFi să funcționeze. Abordarea complexității algoritmului
Știți deja că algoritmii sunt complexe. Cu toate acestea, trebuie să știți cât de complex este un algoritm deoarece este mai complexă, cu atât mai mult este nevoie să îl executați. Următorul tabel vă ajută să înțelegeți diferitele niveluri de complexitate prezentate în ordinea timpului de rulare (de la cel mai rapid la cel mai lent). Complexitate

Descriere

Complexitate constantă O (1)

Oferă un timp de execuție neobișnuit, indiferent de cantitatea de intrare pe care o furnizați. Fiecare intrare necesită o singură unitate de timp de execuție. Complexitatea logaritmică O (log n)
Numărul de operații crește cu o viteză mai mică decât intrarea, făcând algoritmul mai puțin eficient cu intrări mici și mai eficient cu cele mai mari. Un algoritm tipic din această clasă este căutarea binară. Complexitatea liniară O (n)
Operațiile cresc cu intrarea într-un raport 1: 1. Un algoritm tipic este iterația, când scanați o dată intrarea și aplicați o operație fiecărui element al acesteia. Complexitatea liniaritmică O (n log n)
Complexitatea este o combinație între complexitatea logaritmică și liniară. Este tipic unii algoritmi inteligenți folosiți pentru a comanda date, cum ar fi Mergesortsort, Heapsort și Quicksort. Complexitatea patratică O (n
2 )
Operațiile cresc ca un pătrat al numărului de intrări. Când aveți o iterație în interiorul unei alte iterații (numite iterații imbricate în informatică), aveți complexitate patratică. De exemplu, aveți o listă de nume și, pentru a găsi cele mai similare, comparați fiecare nume cu toate celelalte nume. Alți algoritmi de ordonare mai puțin eficienți prezintă o astfel de complexitate: sortarea bulei, sortarea selecției și sortarea inserției. Acest nivel de complexitate înseamnă că algoritmii dvs. pot funcționa cu ore sau chiar zile înainte de a ajunge la o soluție. Complexitatea cubică O (n 3 )
Operațiile cresc chiar mai repede decât complexitatea cuadratoare, deoarece acum aveți mai multe iterații imbricate. Atunci când un algoritm are această ordine de complexitate și trebuie să procesați o cantitate modestă de date (100, 000 de elemente), algoritmul dvs. poate rula de ani de zile. Când aveți un număr de operații care reprezintă o putere a intrării, este comun să se facă referire la algoritm ca fiind executat în timp polinomial. Complexitatea exponențială O (2 n )
Algoritmul ia dublul numărului de operații anterioare pentru fiecare element adăugat nou. Când un algoritm are această complexitate, chiar și problemele mici pot dura pentru totdeauna. Mulți algoritmi care efectuează căutări exhaustive au complexitate exponențială. Cu toate acestea, exemplul clasic pentru acest nivel de complexitate este calculul numerelor Fibonacci. Complexitatea factorilor O (n!) Acest algoritm prezintă un adevărat coșmar de complexitate datorită numărului mare de combinații posibile dintre elemente. Doar imaginați-vă: Dacă intrarea dvs. este de 100 de obiecte și o operațiune pe computer durează 10 -6
secunde (o viteză rezonabilă pentru fiecare calculator de astăzi), veți avea nevoie de aproximativ 10 140 pentru a finaliza cu succes sarcina (un timp imposibil deoarece vârsta universului este estimată la 10 14 ani). O problemă faimoasă a complexității factoriale este problema vânzătorilor care călătoresc, în care un vânzător trebuie să găsească cel mai scurt traseu pentru a vizita multe orașe și pentru a reveni la orașul de plecare.

Pentru manechin Cheie Sheet - 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 ...