Galleria mappe mentale Introduzione agli algoritmi
Riepilogo delle conoscenze introduttive sugli algoritmi, che introduce il concetto di algoritmi, espressioni di algoritmi, analisi della complessità degli algoritmi, fasi di progettazione degli algoritmi, ecc. Costituisce la base per la progettazione e l'analisi degli algoritmi informatici e pone le basi affinché gli studenti possano padroneggiare vari algoritmi specifici nel mondo degli algoritmi. futuro È un contenuto importante che deve essere appreso nel processo di apprendimento degli algoritmi.
Modificato alle 2024-03-02 22:28:38Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Introduzione agli algoritmi
Concetto di algoritmo
Il significato fondamentale di algoritmo
un metodo per risolvere un determinato problema
Definizione di algoritmo
descrizione informale
Un algoritmo è un insieme finito di regole ben formate. Specifica una serie di operazioni per risolvere un tipo specifico di problema. È un metodo o processo per risolvere un problema. È una sequenza di istruzioni che soddisfa input, output, certezza e finitezza.
Input: ci sono zero o più quantità esterne che fungono da input per l'algoritmo.
Output: l'algoritmo produce almeno una quantità come output.
Deterministico: ogni istruzione che compone l'algoritmo è chiara e inequivocabile.
Finitezza: ogni istruzione nell'algoritmo ha un numero limitato di esecuzioni e il tempo per eseguire ciascuna istruzione è limitato.
Algoritmi e programmi
Un programma è l'implementazione specifica di un algoritmo in un determinato linguaggio di programmazione.
Non è necessario che il programma soddisfi la proprietà dell'algoritmo (4), ovvero la finitezza, come un sistema operativo.
Programma = struttura dati dell'algoritmo del linguaggio di programmazione
Lo scopo della ricerca sugli algoritmi
Calcoli numerici
Equazioni lineari non lineari, interpolazione, differenziale integrale
calcoli non numerici
Ordinamento, ottimizzazione, colorazione, percorso, attraversamento, machine learning, data mining
proprietà degli algoritmi
correttezza
Se per ogni dato input valido, l’algoritmo fornisce sempre la risposta corretta al problema entro un tempo limitato, allora l’algoritmo per risolvere il problema si dice che sia corretto.
Ciò si riferisce principalmente alla correttezza matematica dell'algoritmo. Perché la correttezza matematica è la base della correttezza del programma. Quando si formula un algoritmo, fornire una prova matematica della sua correttezza.
carico di lavoro
Misurato dal tempo di esecuzione
Dipende dalla macchina di esecuzione specifica, non va bene
Misurato dal numero di operazioni di base
Indipendente dal computer su cui viene eseguito
Utilizzo dello spazio
Lo spazio richiesto tranne lo spazio di archiviazione per programmi e dati di input
Funziona sul posto: l'utilizzo di spazio aggiuntivo è una funzione costante della dimensione dell'input
semplicità
L'algoritmo dovrebbe essere intuitivo, chiaro e di facile lettura. Un algoritmo semplice dovrebbe essere facile da dimostrare la sua correttezza e facile da analizzare il carico di lavoro.
ottimalità
Un meccanismo astratto per esprimere algoritmi
Astrazione a livello linguistico
linguaggio di programmazione di alto livello
1. Vicino al linguaggio algoritmico, facile da imparare e padroneggiare
2. Fornire ai programmatori un ambiente e strumenti di programmazione strutturati. Il programma ha buona leggibilità, manutenibilità e alta affidabilità.
3. Non dipende dal linguaggio macchina, ha una buona portabilità del programma e un'elevata riusabilità
4. Il compilatore gestisce questioni banali, quindi il grado di automazione è elevato, il ciclo di sviluppo è breve e la qualità del programma è elevata.
astrazione a livello di dati
tipo di dati astratti
Un tipo di dati astratto è un modello di dati di un algoritmo insieme a un insieme di operazioni definite sul modello che fungono da elementi costitutivi dell'algoritmo.
vantaggio
(1) La progettazione di livello superiore dell'algoritmo è separata dall'implementazione di livello inferiore;
(2) La progettazione dell'algoritmo è separata dalla progettazione della struttura dei dati, consentendo la libera scelta della struttura dei dati;
(3) Il modello dei dati e le operazioni sul modello sono unificati in ADT, il che facilita il compromesso tra consumo di spazio e tempo;
(4) Gli algoritmi espressi in tipi di dati astratti hanno una buona manutenibilità;
(5) L'algoritmo è naturalmente modulare;
(6) Fornire modalità e strumenti efficaci per il graduale perfezionamento e la modularizzazione dall'alto verso il basso;
(7) L'algoritmo ha una struttura chiara e livelli distinti, che facilitano la prova della correttezza dell'algoritmo e l'analisi della complessità.
Descrivere l'algoritmo
Giava
Struttura del programma
tipo di dati
metodo
anormale
Classi Java
metodo generale
raccolta dei rifiuti
ricorsione
Passaggi di progettazione di algoritmi
Passaggi fondamentali della progettazione di algoritmi
1. dichiarazione problema
2. Modellazione
3. progettazione dell'algoritmo
4. Prova della correttezza dell'algoritmo
5. Implementazione dell'algoritmo
6. Analisi della complessità degli algoritmi
7. Prova sperimentale
8. Documentazione
Analisi della complessità degli algoritmi
Ragioni dell'analisi
Affinché un algoritmo elabori con successo un input specifico, è necessario stimare o limitare lo spazio di memoria e il tempo di esecuzione richiesti dall'algoritmo
Può confrontare quantitativamente l'efficienza di diversi algoritmi per lo stesso problema
Classificazione della complessità
Algoritmo di complessità temporale polinomiale
Algoritmo di complessità temporale esponenziale
Test e analisi sperimentali
motivo
Esperimento per verificare la correttezza dell'algoritmo
Determinazione della qualità sperimentale degli algoritmi
Determinare i limiti computazionali di un algoritmo
metodo
Domanda di scelta: cosa testare, scopo del test
Stimare il tempo di esecuzione asintotico medio di un algoritmo
Confronta le prestazioni di algoritmi simili per un dato input
Esperimento per determinare i parametri nell'algoritmo
Per gli algoritmi di approssimazione, quanto sono vicini i risultati del test al valore ottimale
Determinare le metriche
Tempo di esecuzione effettivo
fattori di interferenza
Altri programmi in esecuzione sul computer
impatto sulla cache
utilizzo della memoria
Genera dati di test
quantità sufficiente
scale diverse
diversa distribuzione
Programma ed esegui
programmazione
Garantire la coerenza del livello di programmazione
correre
Garantisci un ambiente informatico pulito e riduci il rumore dei dati
analisi dei dati
prova del rapporto
Prova di potenza
Documentazione
Descrizione e analisi del problema
Modellazione e risoluzione
Progettazione di algoritmi e processo di verifica della correttezza
Analisi della complessità degli algoritmi
Registrazione dei risultati dei test e rapporto di analisi
Requisiti di input/output e descrizione del formato
Analisi della complessità degli algoritmi
Utilizzare T(N,I) per rappresentare la complessità temporale dell'algoritmo A su un computer astratto.
N: la dimensione del problema da risolvere
DN: l'insieme di tutti i possibili ingressi di taglia N
P(DN): distribuzione di probabilità del DN
I: input dell'algoritmo, I∈DN
misura della complessità temporale
Descrizione del simbolo
O
definizione
definizione formale matematica
O(g(n)) sono tutte funzioni con g(n) come limite superiore
comprensione simbolica
Regole aritmetiche
Prova per (1)
Ω
definizione
definizione formale matematica
θ
definizione
definizione formale matematica
o
definizione