Video: IBC 2019 Update 2024
Part of Algorithms For Dummies Cheat Sheet
La seguente tabella descrive algoritmi e tipi di algoritmi che potrebbero essere utili per vari tipi di analisi dei dati. (È possibile trovare discussioni su tutti questi algoritmi in Algorithms For Dummies.)
Algorithm | Descrizione | Link utili |
A * Cerca | L'algoritmo tiene traccia del costo dei nodi mentre li esplora utilizzando il equazione: f (n) = g (n) + h (n), dove:
n è l'identificativo del nodo g (n) è il costo per raggiungere il nodo fino ad ora h (n) è il costo stimato per raggiungere il obiettivo dal nodo f (n) è il costo stimato del percorso da n all'obiettivo L'idea è di cercare prima i percorsi più promettenti ed evitare percorsi costosi. |
Standford. edu |
Albero bilanciato | Un tipo di albero che mantiene una struttura equilibrata attraverso la riorganizzazione in modo che possa fornire tempi di accesso ridotti. Il numero di elementi sul lato sinistro differisce dal numero sul lato destro di uno al massimo. | Webdocs |
Ricerca bidirezionale | Questa tecnica esegue la ricerca simultanea dal nodo radice e dal nodo obiettivo finché i due percorsi di ricerca non si incontrano nel mezzo. Un vantaggio di questo approccio è che è efficiente nel tempo perché trova la soluzione più veloce di molte altre soluzioni a forza bruta. Inoltre, utilizza la memoria in modo più efficiente rispetto ad altri approcci e trova sempre una soluzione. Il principale svantaggio è la complessità di implementazione. | Pianificazione. cs |
Albero binario | Questo è un tipo di albero che contiene nodi che si connettono a zero (nodi foglia), uno o due nodi (nodi ramo) altri nodi. Ogni nodo definisce i tre elementi che deve includere per fornire connettività e memorizzare i dati: archiviazione dei dati, connessione a sinistra e connessione corretta. | cs. CMU. edu |
Ricerca per ampiezza | Questa tecnica inizia dal nodo radice, esplora prima ciascuno dei nodi figli e solo dopo passa al livello successivo. Progredisce livello per livello fino a quando non trova una soluzione. Lo svantaggio di questo algoritmo è che deve memorizzare ogni nodo in memoria, il che significa che utilizza una notevole quantità di memoria per un gran numero di nodi. Questa tecnica può verificare la presenza di nodi duplicati, risparmiando tempo e sempre con una soluzione. | Khan Academcy |
Brute Force | Questa è una tecnica di problem solving in cui qualcuno prova ogni possibile soluzione, cercando la soluzione migliore. Le tecniche a forza bruta garantiscono una soluzione ottimale quando ce n'è una, ma richiedono molto tempo per essere implementate e la maggior parte delle persone le evita. | Igm. univ |
First Depth-Search | Questa tecnica inizia dal nodo radice ed esplora una serie di nodi figli connessi fino a raggiungere un nodo foglia. Progredisce ramo dopo ramo finché non trova una soluzione. Lo svantaggio di questo algoritmo è che non è possibile verificare la presenza di nodi duplicati, il che significa che potrebbe attraversare gli stessi percorsi dei nodi più di una volta. In effetti, questo algoritmo potrebbe non trovare affatto una soluzione, il che significa che è necessario definire un punto limite per mantenere l'algoritmo dalla ricerca infinita. Un vantaggio di questo approccio è che è efficiente in termini di memoria. | Hacker Earth |
Dividi e Conquista | Questa è una tecnica di problem solving in cui il problema è suddiviso in parti più piccole possibili e risolto utilizzando l'approccio più semplice possibile. Questa tecnica consente di risparmiare tempo e risorse considerevoli rispetto ad altri approcci, come la forza bruta. Tuttavia, non sempre garantisce un risultato ottimale. | Khan Academy |
Dijikstra | Questo è un algoritmo utilizzato per trovare il percorso più breve in un grafico diretto, ponderato (con pesi positivi). | Geeks for Geeks |
Graph | Un grafico è una sorta di estensione di un albero. Come per gli alberi, hai nodi che si connettono tra loro per creare relazioni. Tuttavia, a differenza degli alberi binari, un grafico può avere più di una o due connessioni. In effetti, i nodi dei grafici hanno spesso una moltitudine di connessioni. Vedete grafici usati in luoghi come le mappe per il GPS e tutti i tipi di altri luoghi per i quali l'approccio top-down di un albero non funzionerà. | Esercizi |
Algoritmi golosi | Thistechnique di uno dei problem solving in cui la soluzione si basa sulla migliore risposta per ogni fase del processo di problem-solving. Gli algoritmi greedy generalmente fanno due presupposti:
È possibile effettuare un'unica scelta ottimale in un dato passaggio. Scegliendo la selezione ottimale in ogni fase, è possibile trovare una soluzione ottimale per il problema generale. |
Tutorial |
Greedy Best-First Search (BFS) | L'algoritmo sceglie sempre il percorso più vicino all'obiettivo utilizzando l'equazione: f (n) = h (n). Questo particolare algoritmo può trovare soluzioni abbastanza rapidamente, ma può anche rimanere bloccato nei loop, quindi molte persone non lo considerano un approccio ottimale per trovare una soluzione. | Centurion2 |
Hashing | Questo è un metodo per predire la posizione di un particolare oggetto dati nella struttura dati (qualunque sia la struttura) prima di cercarlo effettivamente. Questo approccio si basa sull'uso di chiavi inserite in un indice. Una funzione di hash trasforma la chiave in un valore numerico che l'algoritmo inserisce in una tabella hash. Una tabella hash fornisce i mezzi per creare un indice che punti agli elementi in una struttura dati in modo che un algoritmo possa facilmente prevedere la posizione dei dati. | Tutorial |
Heap | Questo è un albero sofisticato che consente l'inserimento di dati nella struttura ad albero. L'utilizzo dell'inserimento dei dati rende più veloce l'ordinamento. È possibile classificare ulteriormente questi alberi come quantità massime di heap e min in base alla capacità dell'albero di fornire immediatamente il valore massimo o minimo presente nell'albero. | Esercitazioni |
Euristica | Questa è una tecnica di problem solving che si basa sulla scoperta di sé e produce risultati sufficientemente utili (non necessariamente ottimali, ma abbastanza buoni) per affrontare un problema abbastanza bene che una soluzione migliore non è t necessario. L'auto-scoperta è il processo che consente all'algoritmo di mostrarti un percorso potenzialmente utile per una soluzione (ma devi comunque contare sull'intuizione e sulla comprensione umana per sapere se la soluzione è quella giusta). | nord-ovest. edu |
MapReduce | Questo è un framework per far funzionare gli algoritmi usando i calcoli in parallelo (usando più computer collegati insieme in una rete), consentendo agli algoritmi di completare le loro soluzioni più velocemente. | Hadoop Apache |
Mergesort | Mergesort è un metodo di ordinamento basato su un confronto generale. Dipende da un approccio divide et impera nello svolgimento del proprio compito. | Geeks for Geeks |
Nash Equilibrium | Questa è una teoria di gioco in cui gli altri giocatori conoscono la strategia di equilibrio per gli altri giocatori, quindi nessuno ha nulla da guadagnare cambiando la sua strategia personale. Questa teoria vede l'uso in qualsiasi situazione ostile in cui il giocatore deve rendere conto delle decisioni prese da tutti gli altri giocatori per vincere la partita. | Khan Academy |
PageRank | PageRank è un algoritmo per misurare l'importanza di un nodo in un grafico. Questo algoritmo è alla base degli algoritmi principali di Google per l'attivazione di ricerche pertinenti per gli utenti. | Princeton. edu |
Ricerca euristica pura | Questo algoritmo espande i nodi in ordine di costo. Mantiene due liste. L'elenco chiuso contiene i nodi che ha già esplorato e l'elenco aperto contiene i nodi che deve ancora esplorare. In ogni iterazione, l'algoritmo espande il nodo con il costo più basso possibile. Tutti i nodi figlio vengono inseriti nell'elenco chiuso e vengono calcolati i costi dei singoli nodi figlio. L'algoritmo invia i nodi figli con un costo ridotto alla lista aperta ed elimina i nodi figlio con un costo elevato. Di conseguenza, l'algoritmo esegue una ricerca intelligente e basata sui costi per la soluzione. | World of Computing |
Quicksort | Questa è una strategia di ordinamento per uso generico basata sul partizionamento di matrici di dati in array più piccoli. Dipende da un approccio divide et impera nello svolgimento del proprio compito. | Esercitazioni |
Albero sbilanciato | Questo è un albero che posiziona i nuovi elementi di dati laddove necessario nell'albero senza considerare l'equilibrio. Questo metodo di aggiunta di elementi rende la costruzione dell'albero più veloce ma riduce la velocità di accesso durante la ricerca o l'ordinamento. | Quora |