Che cos'è un algoritmo? - Elaborazione di algoritmi con esempi

Sommario:

Anonim

Che cos'è un algoritmo?

È una sequenza di regole / istruzioni che vengono delineate prima di adottare un approccio per risolvere qualsiasi problema specifico, una garanzia per risolvere il problema. Ad esempio, prendi un esempio di un punto di gate ferroviario.
Un algoritmo dovrebbe:

  • Essere ben definiti e ben ordinati: le istruzioni fornite in un algoritmo dovrebbero essere comprensibili e ben definite.
  • Avere operazioni inequivocabili, ovvero ciascuna delle fasi di un algoritmo dovrebbe essere abbastanza semplice da non richiedere ulteriori semplificazioni
  • Avere un'operazione effettivamente calcolabile.

Fonte immagine: d262ilb51hltx0.cloudfront.net/

Capire l'algoritmo

Fonte immagine : goo.gl/images/u76bFe

C'è un sensore che rileva l'arrivo di un treno, come uscita che potrebbe essere 2 risultati

  • Il treno sta arrivando
  • Il treno non sta arrivando

Il risultato del primo risultato viene passato a un'azione in cui si consiglia di chiudere le porte mentre il risultato del secondo risultato viene nuovamente testato inviandolo alla dichiarazione iniziale. Inoltre, l'output dell'azione risultante dalla prima condizione viene sottoposto a un test per verificare se il treno è stato completamente lasciato. Se la risposta è sì, le porte vengono aperte, mentre se è negativo, le porte rimangono chiuse. Discuteremo di più di questo e lavoreremo con i seguenti argomenti (I sottoinsiemi / Building Blocks e funzionamento di un algoritmo)

In che modo l'algoritmo semplifica il lavoro?

Come sappiamo, questo è un piano per risolvere un problema. Bene, se non abbiamo un piano, il nostro approccio per risolvere un problema complesso potrebbe fallire nel primo tentativo e anche se risolve il problema, è molto meno probabile che sarà una soluzione ottimale a quel problema.

D'altra parte, se creiamo algoritmi prima di risolvere qualsiasi problema, supponiamo di creare pochi algoritmi e di ordinarli in base alla soluzione ottimale che forniscono, garantirebbe di risolvere il problema dato. Questo è il motivo per cui ovunque, prima di risolvere qualsiasi problema, viene innanzitutto creato un algoritmo.

Principali società di sviluppo di algoritmi

La costruzione di un ottimo prodotto richiede un ottimo design, sebbene non possiamo confrontare un algoritmo per due diversi problemi, quello che possiamo fare è elencare i nomi delle aziende che hanno consegnato alcuni prodotti eccellenti a questo mondo nel corso del 21 ° secolo:

  • DeepMind
  • Baidu
  • Nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Darktrace
  • cambriano
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Zebra Medical Vision
  • Babilonia
  • Intel
  • Flatiron Health
  • Affermare
  • parvenu
  • Elemento AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • UBTECH

Fonte: algoritmoxlab.com/

I sottoinsiemi / blocchi predefiniti e funzionamento di un algoritmo

In tutti questi anni, è stato dimostrato che un algoritmo può essere progettato da soli tre blocchi:

  • Sequenza
  • Selezione
  • Iterazione


Fonte immagine : https://goo.gl/

Una sequenza è una serie di istruzioni che devono essere seguite per risolvere un problema e le istruzioni devono essere eseguite in ordine.

Esempi

1. Aggiunta di due numeri

Step1: Inizia
Passaggio 2: ottenere due numeri come input e archiviarli in una variabile come a e b
Passaggio 3: aggiungere il numero a & b e memorizzare nella variabile c
Passaggio 4: Stampa c
Passaggio 5: interrompi.

Una selezione è un programma che ci consente di scegliere l'output tra diverse azioni. Come abbiamo visto in precedenza nell'esempio del cancello ferroviario, avevamo una scatola condizionale in cui stava controllando se il treno stava arrivando.

2. Trova il più grande tra i 2 numeri

Step1: Inizia
Passaggio 2: ottenere due numeri come input e archiviarli in una variabile come a e b
Passaggio 3: Se a è maggiore di b, allora
Passaggio 4: stampare a è grande
Passaggio 5: altro
Passaggio 6: la stampa b è grande
S tep 7: Stop

Ripetizione o iterazione o ciclo sono i programmi più piccoli che vengono eseguiti più volte fino a quando non viene soddisfatta la condizione.

3. Se vogliamo calcolare il fattoriale di un numero

Step 1 : Inizia
Passaggio 2 : dichiarare le variabili n, fattoriale e i
Passaggio 3 : inizializzare le variabili ie factorialß1 e iß1
Passaggio 4: leggere i valori di n
Passaggio 5: ripetere i passaggi fino alle ripetizioni
fattoriale <- fattoriale * i
i <- i + 1
Passaggio 6: visualizza fattoriale
Step 7: Stop

Cosa puoi fare con un algoritmo?

È una funzione o una serie di funzioni che risolvono un problema. Possiamo usare un algoritmo per risolvere il problema più semplice e alcuni dei problemi più difficili al mondo. Decidiamo che è ottimale con l'aiuto della "complessità temporale". In termini semplici, la complessità temporale è un modo per descrivere il tempo di esecuzione di un determinato algoritmo. Esiste un tempo di esecuzione minimo (chiamato "O"), tempo di esecuzione medio e tempo di esecuzione nel caso peggiore O (N) (noto anche come "O" grande). Agli scienziati informatici e agli ingegneri del software piace pensare agli algoritmi perché sono interessati a valutare e costruire raccolte delle migliori pratiche in modo che non debbano ricominciare da capo ogni istanza di una simile classe di problemi. Di seguito è riportato un esempio di diverse complessità temporali che si potrebbero ottenere risolvendo un problema specifico. Ciò significa anche che potrebbero esserci più soluzioni per un singolo problema, ma dobbiamo scegliere quella più ottimale calcolando le complessità temporali degli algoritmi. Nelle interviste ti verrà chiesto di risolvere un problema e inoltre ti verrà chiesto di ottimizzarlo, cioè di ridurre il tempo di esecuzione del tuo algoritmo. Ad esempio, potresti avere scritto un codice con 2 cicli "for" (iterazione), ma potrebbe essere possibile che il lavoro possa essere realizzato semplicemente utilizzando un singolo ciclo "for" (iterazione) ma non sei stato all'altezza di questa soluzione e ancora devi capire di più!

Fonte immagine: https://goo.gl/

Vantaggi dell'algoritmo

  1. È una rappresentazione graduale di una soluzione a qualsiasi dato problema, che lo rende facile da capire.
  2. Usa una procedura definita.
  3. È indipendente da qualsiasi linguaggio di programmazione, quindi è facile da capire per chiunque anche senza conoscenze di programmazione.
  4. Ogni passaggio ha la sua sequenza logica, quindi è facile eseguire il debug.
  5. Utilizzando l'algoritmo, il problema viene suddiviso in parti o passaggi più piccoli, quindi è più facile per un programmatore convertirlo in un programma reale

Competenze richieste

Al fine di progettare un algoritmo di complessità del tempo solido e migliore, si deve essere un buon pensiero logico, e dovrebbe essere bravo in matematica e dovrebbe conoscere almeno un linguaggio di programmazione orientato agli oggetti. È inoltre necessaria la conoscenza della struttura dei dati.

  1. Computer : informazioni su array, elenchi collegati, alberi binari, tabelle hash, grafici, stack, code, heap e altre strutture di dati fondamentali.
  2. Matematica - Scopri la teoria degli insiemi, le macchine a stati finiti, le espressioni regolari, la moltiplicazione di matrici, le operazioni bit a bit, la risoluzione di equazioni lineari e altri concetti importanti come permutazioni, combinazioni, principio del buco del piccione.
  3. Big-O & Runtime: scopri cos'è Big-O e come analizzare i tempi di esecuzione degli algoritmi.

Perché dovremmo usare e perché abbiamo bisogno di un algoritmo?

Uno dovrebbe usare l'algoritmo in quanto facilita il nostro lavoro e ci fornisce la soluzione più ottimale. Se non applichiamo un algoritmo prima di risolvere qualsiasi problema complesso, ci sono alte probabilità che andremo senza direzione in termini di soluzione. Con l'algoritmo, risparmiamo il nostro tempo nella risoluzione dei problemi e assicuriamo che l'ottimalità dell'algoritmo della soluzione, come detto in precedenza, sia indipendente da qualsiasi linguaggio di programmazione, quindi chiunque può progettare un algoritmo ma per progettare un algoritmo davvero buono si dovrebbe essere bravo in logica e matematica. Serve come prototipo di una soluzione.

Ad esempio, immagina di avere due cubi di Rubik davanti a noi. Uno di loro ti è permesso usare algoritmi (come quante volte o in quale direzione girare una faccia), e l'altro devi trovare la tua strada. In che modo sarà più veloce? Certamente, sarà il primo.

Facciamo un esempio interessante:

Diciamo che abbiamo una serie di elementi e vorremmo ordinarli in ordine crescente. Ora esiste un diverso approccio algoritmico. Ci concentreremo sulla complessità temporale di 2 di essi: ordinamento per inserzione e ordinamento per unione

Ordinamento di inserzione: l'ordinamento di inserzione è un ordinamento semplice.
(La complessità temporale è O (N 2).)

Unisci ordinamento: in unisci ordinamento, ordiniamo gli elementi usando il metodo Dividi e conquista.
La complessità temporale è O (N log N).

Questo potrebbe essere l'impatto che potresti riscontrare se non seguissi e non eseguissi un'analisi su di esso.

Ambito dell'algoritmo

Imparando e padroneggiando l'algoritmo, conosceresti l'arte del "Problem Solving". Con le buone pratiche e l'apprendimento continuo, dovresti essere in grado di risolvere problemi complessi. È la base della progettazione di alcuni software o codici poiché il tempo di esecuzione del codice è uno dei fattori più importanti nel determinare l'esecuzione di un determinato compito. I giganti della tecnologia del mondo come Google e Facebook giudicano le tue capacità di risoluzione dei problemi e nelle interviste, la maggior parte delle domande sono legate alla progettazione di algoritmi e alla risoluzione dei problemi. Ti verrà chiesto di progettare un algoritmo e ottimizzarlo al miglior tempo possibile per la complessità.

Pochi punti:

  • Ciò migliorerà le tue capacità di problem solving che ti porteranno a competere meglio in interviste o esami online
  • Ridurrai il tempo necessario per risolvere qualsiasi problema.
  • Quasi tutti i giganti della tecnologia assumono candidati in base alle loro migliori capacità di problem solving
  • Si può trarre il massimo da un linguaggio di programmazione imparando a costruire e progettare un algoritmo

Chi è il pubblico giusto per l'apprendimento delle tecnologie Algorithm?

Dal punto di vista dell'Informatica, chiunque abbia poca o più programmazione dovrebbe imparare gli algoritmi. Se si scrive codice che non risolve il problema o se risolve il problema ma utilizza le risorse in modo inefficiente (ad esempio, impiega molto tempo a funzionare o utilizza troppa memoria del computer), quindi il codice non è quello ottimale . Ma le aziende vorrebbero che i loro software o prodotti rispondessero o fossero eseguiti nel minor tempo possibile.

Chiunque stia sviluppando qualcosa dovrebbe imparare a fare un'analisi su un algoritmo al fine di garantire il funzionamento ottimale del prodotto finale.

In che modo l'algoritmo ti aiuterà nella crescita della carriera?

La progettazione e l'analisi di un algoritmo non sono un ruolo (specifico) ma fanno parte del tuo lavoro e questa parte svolge un ruolo vitale nello sviluppo del codice. Se si progetta un buon algoritmo, si scriveranno buoni codici con una soluzione ottimale e alla fine il prodotto finale che viene consegnato ai clienti eccellerà. Pertanto, se si progetta e / o sviluppa software, la conoscenza e l'esperienza con strutture dati e algoritmi sono essenziali. Diciamo che stai lavorando su un prodotto di sviluppo software, la sua risposta dovrebbe essere testata a fondo (ovviamente ti piacerebbe controllare il tempo di esecuzione del processo prima di consegnare il codice al team di test del software) e questo non è qualcosa che potresti indovina quasi con precisione in anticipo, ma devi usare l'analisi di un algoritmo per calcolare la complessità temporale.

Conclusione

Così come abbiamo visto una descrizione introduttiva degli algoritmi e dei suoi vari aspetti, e abbiamo visto che potrebbero esserci diversi approcci per risolvere un problema particolare e la complessità di Big-O e Time sono i parametri che ci aiutano a scegliere la soluzione più ottimale. Esplorando un buon numero di algoritmi diventerai fondamentalmente forte nell'analisi dell'algoritmo e dovresti essere in grado di progettare ed eseguire analisi su algoritmo con facilità.

Articoli consigliati

Questa è stata una guida a Che cos'è un algoritmo. Qui abbiamo discusso il funzionamento degli algoritmi con esempi e i suoi vari aspetti. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. Che cos'è Tableau Server?
  2. Guida all'analisi dei big data
  3. Che cos'è SQL Developer?
  4. Cos'è Informatica