Come configurare smartphone e PC. Portale informativo

Algoritmi di sostituzione delle pagine. Orologio

Supponiamo che tutte le distorsioni nel canale siano strettamente deterministiche e che solo il rumore additivo gaussiano n (t) sia casuale, che si assume inizialmente bianco, con densità spettrale N 0. Ciò significa che quando si trasmette un segnale u i (t) (simbolo b i (i = 0,1, ..., m-1), il segnale in ingresso può essere descritto dal modello (3.38):

z (t) = s i (t) + n (t), (0≤t≤T), (6.17)

dove tutti s i (t) = ku i (t-τ) (i = 0, 1, ..., m-1) sono noti. Non sono note solo l'implementazione dell'interferenza e l'indice i del segnale effettivamente trasmesso, che deve essere determinato dal circuito di decisione.

Assumeremo anche che tutti si (t) siano segnali finiti, la cui durata è T. Questo è il caso se i segnali trasmessi ui (t) sono finiti e hanno la stessa durata (il sistema è sincrono), e c'è nessuna propagazione multipercorso o distorsioni lineari nel canale che provocano un aumento della durata del segnale (o vengono corretti).

Nel seguito, assumeremo ovunque che nel sistema sia assicurata una sincronizzazione affidabile dell'orologio, cioè che i confini dell'intervallo di orologio a cui arriva il segnale s (t) siano noti esattamente. I problemi di sincronizzazione sono molto importanti nell'implementazione di demodulatori ottimali e sistemi di comunicazione sincroni in generale, ma esulano dallo scopo di questo corso. Il momento dell'inizio dell'invio s (t) è preso come zero.

In queste condizioni, definiamo l'algoritmo per il funzionamento del demodulatore ottimo (cioè basato sulla regola della massima verosimiglianza) che analizza il segnale all'intervallo di clock 0-T. Per fare ciò, è necessario trovare i rapporti di verosimiglianza per tutti i m possibili segnali rispetto all'ipotesi nulla (s (t) = 0; z (t) = n (t)).

Il compito è complicato dal fatto che la larghezza dello spettro del segnale è infinita (poiché è finita), e quindi lo spazio del segnale è L 2 (T) a dimensione infinita. Per tali segnali (o vettori a dimensione infinita), come notato, non esiste densità di probabilità. Tuttavia, ci sono densità di probabilità "-dimensionali" per ogni n sezioni d'urto del segnale (vedi § 2.1).

Innanzitutto, sostituiamo il rumore bianco con rumore quasi bianco, che ha la stessa densità di potenza spettrale unilaterale N 0, ma solo in una certa banda di frequenza F = n / 2T, dove n >> 1. Consideriamo prima un'ulteriore ipotesi, cioè assumeremo che Z (t) sia rumore. Prendiamo n sezioni equidistanti sull'intervallo di clock attraverso t = 1 / 2F = T / n. I conteggi Z 1, ...., Z n in queste sezioni per il rumore gaussiano quasi bianco sono indipendenti secondo (2.49). Pertanto, la densità di probabilità n-dimensionale per i campioni prelevati è

dove σ 2 = N 0 F è la dispersione (potenza) del quasi rumore bianco.

Nell'ipotesi che il simbolo b i sia stato trasmesso, secondo (6.17), n (t) = z (t) - s i (t). Di conseguenza, la densità di probabilità n-dimensionale condizionale delle sezioni Z (t) è determinata dalla stessa formula della (6.18), se z (tk) è sostituito dalla differenza z (tk) -si (tk), che è rumore sotto questa ipotesi:

Il rapporto di verosimiglianza per il segnale s i (relativo all'ipotesi aggiuntiva), calcolato per n sezioni:

Sostituiamo la varianza σ 2 con la sua espressione: σ 2 = N 0 F = N 0 / (2Δt). Poi

Secondo la regola della massima verosimiglianza nel caso del rumore quasi bianco, il circuito decisionale dovrebbe scegliere il valore di i che fornisce il massimo Λ i [n]. Invece del massimo Λ i, si trova il massimo del suo logaritmo:

Il secondo termine in (6.22) non dipende da t e può essere ignorato quando si confrontano ipotesi. Allora la regola di decisione che è stato trasmesso il simbolo b i, secondo la (6.10), può essere espressa dal sistema delle disequazioni

Torniamo ora al problema originale del rumore bianco. Per fare ciò, espanderemo la striscia F, quindi il numero di sezioni n tende all'infinito e Δt tende a zero. Le somme in (6.22) si trasformano in integrali e la soluzione di attacco è definita come segue:

L'espressione (6.24) determina quelle operazioni (algoritmo operativo) che il ricevitore ottimale dovrebbe eseguire sull'oscillazione in ingresso z (t).

Nella fig. 6.2 per m = 2 mostra uno schema a blocchi di un dispositivo ricevente che opera secondo l'algoritmo (6.24).

Qui "-" sono sottratori; Γ 0, Γ 1 - generatori di segnali di riferimento s 0 (t), s 1 (t); "KB" - squadratrici; ∫ - integratori; RU è un dispositivo decisore che determina, a volte multipli di T (a chiavi chiuse), il numero del ramo con il segnale minimo.

Per m> 2 nel circuito di Fig. 6.2 e altri schemi successivi, il numero di rami di elaborazione del segnale che raggiungono l'IF cresce di conseguenza.

Nello spazio di Hilbert


determina la norma della differenza tra i vettori z e so la distanza tra loro *. Pertanto, l'algoritmo (6.24) può essere scritto come

|| z - s io ||

e darne una semplice interpretazione geometrica: il demodulatore ottimo dovrebbe registrare quello dei segnali s i (t) (corrispondente al simbolo b i), che è "più vicino" alla forma d'onda ricevuta z (t). A titolo di esempio, Fig. 6.3 mostra la partizione ottimale dello spazio bidimensionale dei segnali ricevuti z (t) durante la trasmissione dei segnali s 1 (t) e s 0 (t). Le aree per prendere decisioni a favore dei simboli 0 o 1 si trovano su entrambi i lati della linea 0-0, che è perpendicolare al segmento che collega i punti del segnale e lo divide a metà.

La presenza della fig. 6.2 quadrati, progettati per fornire una trasformazione quadratica dei valori istantanei dei segnali di ingresso nella loro intera gamma dinamica, spesso ne complicano l'implementazione. Pertanto, in base alla (6.24), si ottiene un algoritmo di ricezione equivalente che non richiede dispositivi di quadratura.

Espandendo le parentesi sotto il segno di integrale e cancellando in entrambi i lati delle disuguaglianze (6.24) il termine

arriviamo all'algoritmo di ricezione:

dove E j è l'energia del segnale atteso s j (t):


Per un sistema binario, l'algoritmo (6.25) si riduce al controllo di una disuguaglianza

Un dispositivo che calcola direttamente il prodotto scalare


è detto filtro attivo, o correlatore, quindi un ricevitore che implementa l'algoritmo (6.25) è detto di correlazione.

* (Per lo spazio euclideo n-dimensionale, questa norma è uguale a)


Nella fig. 6.4 mostra uno schema a blocchi di un dispositivo ricevente operante secondo (6.27). Qui i blocchi × sono moltiplicatori; Γ 0, Γ 1 - generatori di segnali di riferimento s 0 (t) s 1 (t); ∫ - integratori; "-" - sottratori; RU è un solutore che determina a volte che sono multipli di T (quando la chiave è chiusa), i = 0, 1 è il numero del ramo con il segnale massimo.

Se i segnali ui (t) sono scelti in modo che tutte le loro realizzazioni (e, di conseguenza, tutte le realizzazioni di si (t) abbiano le stesse energie (E i = const), l'algoritmo di ricezione (6.25) (e, di conseguenza , la sua implementazione) è semplificata (non c'è bisogno di sottratori) e assume la forma

Dalla (6.29) si vede che la regola di decisione non cambia se il segnale z (t) che arriva all'ingresso del demodulatore viene moltiplicato per un numero qualsiasi. Pertanto, un sistema in cui tutte le realizzazioni di segnale hanno uguale energia differisce in quanto l'algoritmo di ricezione ottimale non richiede la conoscenza della "scala" del segnale in ingresso, o, in altre parole, la conoscenza del coefficiente di trasmissione k del canale. Questa importante caratteristica ha dato origine all'uso diffuso di sistemi di segnale di pari energia, comunemente denominati sistemi di pausa attiva. Ciò è particolarmente importante per i canali in dissolvenza in cui il guadagno fluttua (vedere §6.7).

Si noti che per un sistema binario la disuguaglianza (6.27) può essere rappresentata in una forma più semplice:


dove s Δ (0 = s 1 (t) - s 0 (t) è il segnale di differenza; λ = 0,5 (E 1 -E 0) è il livello di soglia. Per un sistema con pausa attiva, X = 0, che facilita notevolmente l'attuazione dello schema ottimale.

Quando la disuguaglianza (6.30) è soddisfatta, viene registrato il simbolo 1, altrimenti - 0. Per implementare (6.30) nel circuito di Fig. 6.4 è richiesto un solo ramo.

Nella fig. 6.5, a mostra un diagramma che implementa l'algoritmo (6.30) per un sistema di trasmissione binaria con impulsi unipolari (con pausa passiva): s 1 (t) = a, s 0 (t) = 0. Per questi segnali, s Δ ( t) = s 1 (t) = a, E 1 = a 2 T, E 0 = 0, λ = a 2 T / 2 e (6,30) assume la forma seguente:


Il sistema di segnali binari considerato viene utilizzato nei dispositivi di comunicazione via filo più semplici. Nei canali radio, così come nei moderni canali via cavo, vengono utilizzati segnali ad alta frequenza. I sistemi binari più semplici con segnali armonici sono i sistemi di spostamento di ampiezza (AM), fase (PM) e frequenza (FM).

In AM binario, s 1 (t) = acos (ω 0 t + φ), s 0 (t) = 0. Si presume che tutte le costanti (a, ω 0, φ) in questa sezione siano note. Poiché qui s Δ (t) = s 1 (t), E 1 = a 2 T / 2 e E 0 = 0, la regola (6.30) sarà scritta come segue:


È implementato dal circuito di Fig. 6.5.6, che differisce dalla Fig. 6.5, un blocco per moltiplicare il segnale in ingresso per il segnale di riferimento cos (ω 0 t + φ). Il livello di soglia in questo caso è pari a aT / (4RC).

Per un sistema FM binario s 0 (t) = a cos (tω 0 + φ), s 0 (t) = a cos (tω 0 + φ + π) = -s 1 (t). Questo è un sistema con una pausa attiva, e quindi λ = 0 in (6.30) È facile verificare che la regola di decisione si riduce in questo caso a quanto segue:


ed è implementato dallo stesso circuito di Fig. 6.5.6 a λ̇ = 0. In questo caso RU svolge il ruolo di discriminatore di polarità.

Riso. 6.6. Demodulatore ottimale con filtro sbiancante per rumore "colore" gaussiano

Consideriamo brevemente il caso in cui il rumore gaussiano nel canale non è bianco o quasi bianco, ma "colorato", cioè ha una densità di potenza non uniforme G (f) nella banda dello spettro del segnale. Facciamo passare la somma del segnale e del rumore in arrivo all'ingresso del demodulatore attraverso un filtro con funzione di trasferimento k (i2πf) tale che il prodotto G (f) | k (i2πf) | 2 era N 0 costante. Di tutti i possibili filtri con k (i2πf), che soddisfano questa condizione e differiscono solo nella risposta fase-frequenza, si può scegliere quello di minima fase, che è reversibile. Ovviamente, il rumore all'uscita del filtro risulterà quasi bianco: G out (f) = N 0. Pertanto, un tale filtro è chiamato sbiancamento.

Il segnale si (t), dopo essere passato attraverso il filtro sbiancante, si trasformerà in qualche altro segnale, che indichiamo con s "i (t). La sua forma può essere determinata conoscendo si (t) e k (i2πf). Se ora applichiamo oscillazioni dall'uscita del filtro sbiancante al demodulatore, che è ottimale per ricevere segnali s "i (t) (i = 0, 1, ..., m-1), quindi otteniamo il circuito di Fig. 6.6, che è ovviamente ottimale per segnali s i (t) con rumore colorato.

Da notare che nel diagramma di Fig. 6.2, 6.4 e 6.5, il segnale di riferimento deve avere le stesse fasi iniziali dei segnali in arrivo previsti, ovvero deve essere coerente con i segnali in arrivo. Tale esigenza solitamente complica la realizzazione del demodulatore e richiede l'introduzione in esso, oltre ai blocchi indicati nelle figure, di ulteriori dispositivi atti a regolare le fasi dei segnali di riferimento.

Sono detti coerenti tutti i metodi di ricezione, per la cui attuazione è richiesta un'esatta conoscenza a priori delle fasi iniziali dei segnali in arrivo. Nei casi in cui le informazioni sulle fasi iniziali dei segnali attesi vengono estratte dal segnale ricevuto stesso (ad esempio, se la fase fluttua, ma così lentamente da poter essere prevista da elementi di segnale precedenti), la ricezione viene chiamata quasi coerente. Se le informazioni sulle fasi iniziali dei segnali in arrivo sono assenti o, per qualche motivo, non vengono utilizzate, la ricezione viene definita incoerente (vedi § 6.6).

Supponiamo che tutte le distorsioni nel canale siano strettamente deterministiche e che solo il rumore additivo gaussiano sia casuale, che inizialmente assumeremo bianco, con densità spettrale. Ciò significa che quando si trasmette un segnale (simbolo), il segnale in ingresso può essere descritto dal modello (3.28):

dove tutti sono conosciuti. Non sono note solo l'implementazione dell'interferenza e l'indice del segnale effettivamente trasmesso, che deve essere determinato dal circuito di decisione.

Assumeremo anche che tutti siano segnali finiti, la cui durata si verifica se i segnali trasmessi sono finiti e hanno la stessa durata (il sistema è sincrono), e non c'è propagazione multipercorso o distorsioni lineari nel canale che causano l'allungamento del segnale (o sono corretti).

In quanto segue, assumeremo ovunque che nel sistema sia fornita una sincronizzazione affidabile dell'orologio, ovvero che i limiti dell'intervallo di clock a cui arriva il segnale siano noti esattamente. I problemi di sincronizzazione sono molto importanti nell'implementazione di demodulatori ottimali e sistemi di comunicazione sincroni in generale, ma esulano dallo scopo di questo corso. Considereremo zero il momento dell'inizio dell'invio.

In queste condizioni, determiniamo l'algoritmo di funzionamento del demodulatore ottimo (cioè basato sulla regola della massima verosimiglianza) analizzando il segnale all'intervallo di clock. A tal fine è necessario trovare i rapporti di verosimiglianza per tutti i possibili segnali rispetto all'ipotesi nulla

Il compito è complicato dal fatto che la larghezza dello spettro del segnale è infinita (poiché è finita), e quindi lo spazio del segnale è infinito.Per tali segnali (o vettori a dimensione infinita), come già notato, non c'è probabilità densità. Tuttavia, ci sono -esime densità di probabilità per qualsiasi sezione d'urto del segnale (vedi § 2.1).

Sostituiamo prima il rumore bianco. quasi-bianco, avente la stessa densità di potenza spettrale unilaterale ma solo in una certa banda di frequenza dove 1. Consideriamo prima l'ipotesi nulla, cioè assumeremo che sia rumore. Consideriamo le sezioni d'urto equidistanti dell'intervallo di clock.I conteggi in queste sezioni d'urto per il rumore gaussiano quasi bianco sono indipendenti secondo (2.49). Pertanto, la densità di probabilità -dimensionale per i campioni prelevati

dove la varianza (potenza) del rumore quasi bianco.

Nell'ipotesi che il simbolo sia stato trasmesso, di conseguenza, la densità di probabilità condizionale -dimensionale delle sezioni trasversali è determinata dalla stessa formula della (4.18), se sostituita dalla differenza

Il rapporto di verosimiglianza per il segnale (relativo all'ipotesi nulla), calcolato per le sezioni d'urto:

Sostituiamo la varianza con la sua espressione:

Secondo la regola della massima verosimiglianza nel caso del rumore quasi bianco, il circuito decisionale dovrebbe scegliere un valore che fornisca un massimo Anziché un massimo, si può trovare il massimo del suo logaritmo:

Si noti che il secondo termine in (4.22) non dipende e può essere ignorato nel confronto. Quindi la regola di decisione che un segnale è stato trasmesso può essere formulata come segue:

Lo spazio euclideo in-dimensionale determina la norma della differenza dei vettori o la distanza tra loro. Pertanto, l'algoritmo (4.23) può essere scritto come

e darne una semplice interpretazione geometrica: il demodulatore ottimo dovrebbe registrare quello dei segnali (corrispondente al simbolo che è "più vicino" alla forma d'onda ricevuta. A titolo di esempio, la Fig. 4.2 mostra il partizionamento ottimale dello spazio bidimensionale di segnali ricevuti durante la trasmissione di segnali binari

Riso. 4.2. Partizionamento ottimale dello spazio delle oscillazioni ricevute con un codice binario e segnali esattamente noti

Trasformiamo la (4.22) espandendo le parentesi e facendo abbreviazioni:

Torniamo ora al problema originale del rumore bianco. A tale scopo, espanderemo la striscia, quindi il numero di sezioni tenderà all'infinito, a zero. Le somme in (4.24) si trasformano in integrali e il logaritmo del rapporto di verosimiglianza è definito come

e l'algoritmo di decisione di trasferimento assume la forma

dove l'energia del segnale atteso

Un dispositivo che calcola direttamente il prodotto scalare,

è detto filtro attivo, o correlatore, quindi un ricevitore che implementa l'algoritmo (4.26) è detto di correlazione.

Nella fig. 4.3 mostra uno schema a blocchi di un dispositivo ricevente operante secondo (4.26). Qui i blocchi X sono moltiplicatori; A - generatori di segnali di riferimento - integratori, sottratori; un solutore che determina, a volte multipli (a chiave chiusa), il numero del ramo con il segnale massimo.

Se i segnali sono scelti in modo tale che tutte le loro realizzazioni (e, di conseguenza, tutte le realizzazioni abbiano le stesse energie, l'algoritmo

Riso. 4.3. Demodulatore ottimale con segnali esattamente noti

ricezione (4.26) (e, di conseguenza, la sua attuazione) è semplificata (non c'è bisogno di sottratori) e prende

Dalla (4.29) si vede che la regola di decisione non cambia se il segnale in arrivo all'ingresso del demodulatore viene moltiplicato per un numero qualsiasi. Pertanto, un sistema in cui tutte le realizzazioni del segnale hanno uguale energia differisce in quanto l'algoritmo di ricezione ottimale in esso non richiede la conoscenza della "scala" del segnale in ingresso, o, in altre parole, la conoscenza del coefficiente di trasmissione del canale. Questa importante caratteristica ha dato origine all'uso diffuso di sistemi di segnale di pari energia, comunemente denominati sistemi di pausa attiva. Ciò è particolarmente importante per i canali in dissolvenza in cui il guadagno fluttua (vedere § 4.7 di seguito).

Va sottolineato che il corretto sincronismo di clock per rilevare i confini dei pacchi (prendendo segnali all'uscita dell'unità a volte, multipli e azzerando la tensione dall'integratore dopo aver preso una decisione) è una condizione indispensabile per l'implementazione pratica degli algoritmi considerati secondo lo schema di Fig. 4.3.

Per il più comune sistema binario di disuguaglianze (4.26), rimane solo una cosa e l'algoritmo di ricezione può essere presentato in una forma più semplice:

dov'è il segnale di differenza; livello di soglia. Per un sistema con una pausa attiva, che facilita notevolmente l'implementazione dello schema ottimale.

Quando la disuguaglianza (4.30) è soddisfatta, viene registrato il simbolo 1, altrimenti è 0. Per implementare la (4.30) nel circuito di Fig. 4.3 è richiesto un solo ramo.

Nella fig. 4.4 mostra uno schema che implementa l'algoritmo (4.30) per un sistema di trasmissione binaria con impulsi unipolari (con una pausa passiva):

Riso. 4.4. Implementazione della ricezione ottimale di impulsi video rettangolari binari

Con questi segnali e la regola (4.30) assumerà la seguente forma:

Integrazione nel circuito fig. 4.4 viene eseguito con sufficiente precisione dal circuito, a condizione che contemporaneamente sul condensatore C la tensione al momento sia uguale a - Pertanto, la regola è che questa tensione deve superare il livello di soglia in cui viene inserito. record (si verifica quando la chiave è chiusa, è necessario ripristinare la tensione dall'integratore in modo che possa essere ricevuto l'elemento di segnale successivo. Il ripristino viene effettuato chiudendo la chiave che scarica il condensatore.

Lo stesso schema, con una leggera modifica, può essere utilizzato per la demodulazione in un sistema di trasmissione binaria con impulsi bipolari (con una pausa attiva): In questo caso, quindi, In questo caso, dopo la riduzione, la regola (4.30) assume la forma

È implementato dal circuito di Fig. 4.4, se il livello di soglia X è impostato uguale a zero. In questo caso si trasforma in un discriminatore di polarità, che emette il simbolo 1 quando la tensione al suo ingresso è positiva, altrimenti.

I due sistemi considerati sono utilizzati nei dispositivi di comunicazione via cavo più semplici. Nei canali radio, così come nei moderni canali via cavo, vengono utilizzati segnali ad alta frequenza. I sistemi binari più semplici con segnali armonici sono i sistemi di ampiezza (AM), fase (PM) e spostamento di frequenza.

In binario Si presume che tutte le costanti incluse in questa sezione siano note. Poiché qui la regola (4.30) sarà scritta come segue:

È implementato dal circuito di Fig. 4.5, che differisce dalla fig. 4.4. unità per moltiplicare il segnale in ingresso per il segnale di riferimento Il livello di soglia in questo caso è uguale a

Riso. 4.5. Realizzazione di una ricezione ottimale nel sistema binario AM, PM con un segnale noto con precisione

In un sistema FM binario

Questo è un sistema con una pausa attiva, e quindi è facile assicurarsi che la regola di decisione si riduca a quanto segue: e

è implementato dallo stesso circuito di Fig. 4.5 at In questo caso, svolge il ruolo di discriminatore di polarità. Il suo aspetto può essere determinato conoscendolo sullo sfondo del rumore bianco con densità spettrale. È facile vedere che all'uscita del filtro ci saranno segnali e il rumore sarà colorato, con densità spettrale, cioè esattamente quelli i segnali e il rumore arriveranno all'ingresso del demodulatore ottimo immaginario, viene calcolato. Pertanto, il diagramma in Fig. 4.66 è un demodulatore per segnali su sfondo di rumore bianco, in cui la probabilità di errore è minore rispetto al demodulatore ottimo collegato all'uscita del filtro sbiancante di Fig. 4.6a. Questa contraddizione dimostra che non può esistere un demodulatore per segnali sullo sfondo del rumore colorato meglio che in Fig. 4.6a.

Si noti che quando si implementa un tale demodulatore con un filtro sbiancante, sorgono difficoltà a causa del fatto che i segnali, quando passano attraverso il filtro, tendono ad allungarsi e c'è una sovrapposizione di elementi, segnale Esistono diversi modi per superare questa difficoltà , ma una loro analisi dettagliata esula dallo scopo del corso.

Da notare che nel diagramma di Fig. 4.5 il segnale di riferimento dovrebbe avere le stesse fasi iniziali dei segnali in arrivo previsti o, in altre parole, dovrebbe essere coerente con i segnali in arrivo. Tale esigenza solitamente complica la realizzazione del demodulatore e richiede una sua introduzione in aggiunta a quelle indicate in Fig. 4.5 blocchi di dispositivi aggiuntivi atti a regolare le fasi dei segnali di riferimento.

Sono detti coerenti tutti i metodi di ricezione, per la cui attuazione è richiesta un'esatta conoscenza a priori delle fasi iniziali dei segnali in arrivo. Nei casi in cui le informazioni sulle fasi iniziali dei segnali attesi vengono estratte dal segnale ricevuto stesso (ad esempio, se la fase fluttua, ma così lentamente da poter essere prevista da elementi di segnale precedenti), la ricezione viene chiamata quasi coerente. Se le informazioni sulle fasi iniziali dei segnali in arrivo sono assenti o, per qualche motivo, non vengono utilizzate, la ricezione viene definita incoerente (vedere il successivo § 4.6).

Ottimizzazione dell'algoritmo del programma sviluppato
La fase di sviluppo di un algoritmo per la tua applicazione è la più difficile dell'intera catena del ciclo di vita del programma. Il successo della sua implementazione sotto forma di codice di programma dipende in gran parte da quanto profondamente vengono pensati tutti gli aspetti del tuo compito. In generale, i cambiamenti nella struttura del programma stesso hanno un effetto molto maggiore rispetto alla messa a punto del codice del programma. Non esistono soluzioni ideali e lo sviluppo di un algoritmo applicativo è sempre accompagnato da errori e falle. Qui è importante trovare i colli di bottiglia nell'algoritmo che influiscono maggiormente sulle prestazioni dell'applicazione.

Inoltre, come dimostra la pratica, è quasi sempre possibile trovare un modo per migliorare un algoritmo di programma già sviluppato. Naturalmente, è meglio sviluppare attentamente un algoritmo all'inizio della progettazione per evitare in futuro molte spiacevoli conseguenze associate al completamento di frammenti di codice del programma entro un breve periodo di tempo. Prenditi il ​​tempo necessario per sviluppare l'algoritmo dell'applicazione: questo ti farà risparmiare mal di testa durante il debug e il test del programma e ti farà risparmiare tempo.

Va tenuto presente che un algoritmo efficiente dal punto di vista delle prestazioni del programma non soddisfa mai i requisiti per impostare il problema al 100% e viceversa. Algoritmi che non sono male in termini di struttura e leggibilità, di regola, non sono efficienti in termini di implementazione del codice del programma. Uno dei motivi è il desiderio dello sviluppatore di semplificare la struttura complessiva del programma utilizzando, ove possibile, strutture nidificate di alto livello per i calcoli. La semplificazione dell'algoritmo in questo caso porta inevitabilmente a una diminuzione delle prestazioni del programma.

All'inizio dello sviluppo di un algoritmo, è piuttosto difficile stimare quale sarà il codice di programma dell'applicazione. Per progettare correttamente un algoritmo di programma, è necessario seguire alcune semplici regole:
1. Studiare attentamente il compito per il quale verrà sviluppato il programma.
2. Determinare i requisiti di base per il programma e presentarli in una forma formalizzata.
3. Determinare la forma di presentazione. dati di input e output e la loro struttura, nonché eventuali restrizioni.
4. Sulla base di questi dati, determinare la versione del programma (o modello) dell'implementazione dell'attività.
5. Scegliere un metodo per implementare l'attività.
6. Sviluppare un algoritmo per l'implementazione del codice del programma. L'algoritmo per la risoluzione del problema non deve essere confuso con l'algoritmo per l'implementazione del codice del programma.
In generale, non corrispondono mai. Questa è la fase più critica nello sviluppo del software!
7. Sviluppare il codice sorgente del programma in conformità con l'algoritmo di implementazione del codice del programma.
8. Eseguire il debug e testare il codice del programma dell'applicazione sviluppata.

Queste regole non dovrebbero essere prese alla lettera. In ogni caso specifico, il programmatore stesso sceglie la metodologia per lo sviluppo dei programmi. Alcune fasi dello sviluppo dell'applicazione possono essere ulteriormente dettagliate e alcune possono essere del tutto assenti. Per piccoli compiti, è sufficiente sviluppare un algoritmo, modificarlo leggermente per implementare il codice del programma e quindi eseguirne il debug.

Quando si creano applicazioni di grandi dimensioni, potrebbe essere necessario sviluppare e testare frammenti separati del codice del programma, che potrebbero richiedere ulteriori dettagli sull'algoritmo del programma.
Numerose fonti letterarie possono aiutare il programmatore per la corretta algoritmizzazione dei compiti. I principi per la costruzione di algoritmi efficienti sono ben sviluppati. C'è molta buona letteratura su questo argomento, ad esempio il libro di D. Knuth "The Art of Programming".

Ottimizzato per l'hardware del computer
In genere, lo sviluppatore del software si impegna a garantire che le prestazioni dell'applicazione dipendano il meno possibile dall'hardware del computer. In questo caso, dovresti prendere in considerazione il caso peggiore, quando l'utente del tuo programma non disporrà dell'ultimo modello del computer. In questo caso, la "revisione" dell'hardware consente spesso di trovare riserve per migliorare le prestazioni dell'applicazione.
La prima cosa da fare è analizzare le prestazioni delle periferiche del computer su cui dovrebbe funzionare il programma. In ogni caso, sapere cosa è più veloce e cosa è più lento aiuterà nello sviluppo di un programma. L'analisi della capacità del sistema consente di identificare i colli di bottiglia e prendere la decisione giusta. Diversi dispositivi del computer hanno una larghezza di banda diversa. I più veloci sono il processore e la RAM, mentre quelli relativamente lenti sono l'hard disk e l'unità CD. I più lenti sono stampanti, plotter e scanner.

Nelle interviste, alle persone viene spesso chiesto quale sia il tipo più veloce. Una domanda trabocchetto. Spieghiamo perché e cerchiamo l'opzione migliore.

In risposta, devi chiedere: "Per quale caso viene scelto l'ordinamento ottimale in base al tempo?" E solo quando vengono annunciate le condizioni, puoi tranquillamente passare attraverso le opzioni disponibili.

Esiste:

  • algoritmi di ordinamento O (n 2) come l'ordinamento per inserimento, bolla e selezione, che vengono utilizzati in casi speciali;
  • ordinamento rapido (generale): medio O (n log n) scambi, ma il momento peggiore è O (n 2) se l'array è già ordinato o gli elementi sono uguali;
  • algoritmi O (ntronco d'alberon) come merge sort e heap sort (heap sort), che sono anche buoni algoritmi di ordinamento di uso generale;
  • Sopra) o algoritmi di ordinamento lineare (seleziona, seleziona e scambia, seleziona e conta) per elenchi di numeri interi, che possono essere appropriati a seconda della natura degli interi negli elenchi.

Se tutto ciò che conosci è una relazione di ordinamento generale tra gli elementi, allora gli algoritmi ottimali avranno complessità O (n log n)... Per gli algoritmi lineari sono necessarie maggiori informazioni sulla struttura degli elementi.

L'ottimalità dell'algoritmo dipende strettamente dal tipo di liste/array che si intende ordinare, e anche dal modello informatico. Più informazioni hai, più precisa sarà la tua scelta. Sotto ipotesi molto deboli sui fattori, la complessità ottimale del caso peggiore potrebbe essere Oh (n!).

Questa risposta affronta solo le complessità. Il tempo di esecuzione effettivo degli algoritmi dipende da un numero enorme di fattori.

test

Allora qual è l'ordinamento più veloce?

Visualizzazione

Una bella visualizzazione di sorta è dimostrata in questo video:

Sembra rispondere alla domanda su quale sia il tipo più veloce, ma tieni presente che ci sono molti fattori che influenzano la velocità, e questa è solo una delle opzioni dimostrate.

AGENZIA FEDERALE PER L'EDUCAZIONE

Istituto statale di istruzione professionale superiore "Università tecnica statale di Voronezh"

Facoltà di ingegneria radiofonica

Dipartimento di Ingegneria Radio

Specialità 210302 "Ingegneria radiofonica"

Ottimizzazione degli algoritmi di ricerca

Completato dallo studente gr. RT-041 D.S. Chetkin

Controllato dal professore associato V.P. Litvinenko

Introduzione. 4

1. Sviluppo di un algoritmo di ricerca dicotomico ottimo con distribuzione di probabilità equiprobabile e numero di eventi M = 16. 5

2. Sviluppo di un algoritmo di ricerca ottimo per la legge esponenziale della distribuzione di probabilità in M ​​= 16. 7

3. Sviluppo di un algoritmo di ricerca ottimo per una legge di distribuzione esponenziale con il numero di misure da N = 15 a N = log2M .. 9

4. Sviluppo di un algoritmo di ricerca ottimo per la 9a variante della distribuzione con il numero di misurazioni da N = 1 a 15. 12

Conclusione. diciannove

Riferimenti .. 20

introduzione

La segretezza caratterizza i costi (tempo, denaro) necessari per identificare un re-evento con una data affidabilità (probabilità di una decisione corretta, probabilità di confidenza).

Quando si forma una valutazione della segretezza di un evento casuale, è stata adottata come giustificata una procedura di ricerca passo-passo alternativa, la cui essenza è la seguente.

L'insieme X con la corrispondente legge di distribuzione di probabilità è diviso in due sottoinsiemi e (l'apice è il numero della partizione). Il contatore binario effettua una misurazione binaria, identificando in quale sottoinsieme si trova il re-evento (la sua traccia). Quindi il sottoinsieme in cui viene rilevato il re-evento (in Fig.2.1. Questo) viene nuovamente diviso in due sottoinsiemi e viene rivelata la traccia del re-evento in uno di essi. La procedura termina quando nel sottoinsieme selezionato compare un evento. La ricerca può essere sequenziale e dicotomica. Nel primo algoritmo (), viene eseguita un'enumerazione sequenziale di stati dal primo all'ultimo fino a quando non si incontra un nuovo evento.

Il secondo algoritmo di ricerca () consiste nel dividere a metà l'intero insieme di stati, verificando la presenza di un re-evento in ciascuna di queste parti, quindi dividendo la metà selezionata dell'insieme X in due parti uguali, verificando la presenza di un re-evento in loro, e così via. La ricerca termina quando compare un evento nel sottoinsieme selezionato.

Esistono diversi modi per ridurre al minimo le routine di ricerca binaria. Esempi sono i metodi Zimmermann-Huffman e Shannon-Fono. L'algoritmo può essere ottimizzato per vari parametri, tenendo conto del costo della misurazione e senza. In questo lavoro di laboratorio, abbiamo studiato l'ottimizzazione dell'algoritmo di ricerca dicotomica per il valore minimo della segretezza media.

1. Sviluppo di un algoritmo di ricerca dicotomico ottimo con distribuzione di probabilità equiprobabile e numero di eventi M = 16

Attiva la modalità di ricerca dicotomica. Imposta il numero di eventi per una distribuzione uniforme delle probabilità e imposta il numero di misurazioni. Sviluppa un algoritmo di ricerca ottimale, impostalo sul campo di composizione, esegui la modellazione, determina la potenziale segretezza.

In questo caso, l'algoritmo di ricerca più ottimale è l'algoritmo sviluppato secondo il principio di Shannon-Fano. Questo metodo presuppone che l'insieme iniziale di elementi con una data distribuzione sia diviso in due sottoinsiemi con i numeri 0 e 1 in modo che le probabilità di entrarvi siano il più vicine possibile (idealmente a metà). Quindi ciascuno dei sottoinsiemi ottenuti viene diviso separatamente in due sottoinsiemi con la stessa condizione e numeri con 00,01,10,11. La divisione termina quando tutti gli elementi del sottoinsieme hanno un solo elemento ciascuno.

Di conseguenza, è stato sviluppato un algoritmo di ricerca ottimale per una legge di distribuzione di probabilità equiprobabile.

Calcoliamo il potenziale segreto per una legge di distribuzione di probabilità equiprobabile:

(1)

Di conseguenza, per questo caso:

Di conseguenza, è stata ottenuta una semplice espressione per determinare la potenziale segretezza di una legge di distribuzione uniforme, che, con un algoritmo di ricerca dicotomico, non dipende dall'enumerazione di una combinazione di misure, ma solo dal tipo di albero di ricerca.

Sviluppo di un algoritmo di ricerca ottimo per la legge esponenziale della distribuzione di probabilità in M ​​= 16

Scegli la distribuzione di probabilità esponenziale degli eventi della forma,, - fattore di normalizzazione, con lo stesso del punto 1. Determinare l'algoritmo di ricerca ottimale, impostarlo sul campo di composizione, eseguire la modellazione, determinare la potenziale segretezza.

Inizialmente, lasceremo l'albero di ricerca come nel paragrafo precedente. "PrintScreen" del programma "Poisk" per questo caso per una legge di distribuzione esponenziale.

Osservando l'andamento della curva per rimuovere l'incertezza, giungiamo alla conclusione che il suo andamento non è ottimale. Utilizzando noti algoritmi di ottimizzazione della ricerca, arriviamo alla conclusione che in questo caso l'algoritmo di ricerca ottimale non è affatto un algoritmo dicotomico per qualsiasi combinazione di ricerca di un re-evento, ma sequenziale. Per questo caso, è ottimale, poiché la prima misurazione verifica la più probabile, poi la successiva e così via fino a quando non c'è incertezza nel processo decisionale.

Dimostrazione dell'utilizzo di un algoritmo di ricerca sequenziale. Per questo, viene utilizzato il metodo Zimmermann-Huffman. Questo metodo di ottimizzazione si compone di due fasi: "Operazioni di approvvigionamento" e "Lettura". Maggiori dettagli su questo sono forniti nel libro.

Poiché l'esponente è maggiore di 1, e questo soddisfa la disuguaglianza:

Dove è l'esponente della distribuzione di probabilità uguale a 1, allora un algoritmo di ricerca sequenziale è ottimale per questo caso.

Come risultato di questo paragrafo, si mostra che l'algoritmo di ricerca sequenziale è ottimale. Confrontando i risultati dell'esecuzione dei due punti, si arriva alla conclusione che per ogni legge della distribuzione di probabilità esiste il proprio algoritmo di ricerca ottimale, sequenziale, dicotomico o combinato.

Sviluppo di un algoritmo ottimo per trovare una legge di distribuzione esponenziale con il numero di misure da N = 15 a N = log2M

Per la distribuzione esponenziale delle probabilità dal punto 2, diminuendo successivamente il numero massimo di misurazioni da a, sviluppare algoritmi di ricerca ottimali e, sulla base dei risultati della simulazione, determinare i valori corrispondenti del numero medio di misurazioni.

Per N = 15 dal punto precedente, l'algoritmo di ricerca sequenziale è ottimale e per esso il valore medio delle misurazioni binarie è determinato allo stesso modo della potenziale segretezza. Il valore di Rcp è presentato nella Tabella 1.

Tabella 1 - Dipendenza dal numero medio di misurazioni

sul numero di misurazioni con algoritmi di ricerca ottimali

Calcoliamo la potenziale segretezza per ogni caso secondo la formula 1:

Con un numero di dimensioni pari a 3, è impossibile sviluppare un algoritmo di ricerca, perché non soddisfa la condizione di fattibilità della ricerca, ovvero:

Di conseguenza, viene costruito un grafico della dipendenza del numero medio di misurazioni dal numero di misurazioni, mostrato nella Figura 8.

Figura 8 - Dipendenza del numero medio di misurazioni dal numero di misurazioni per la legge esponenziale della distribuzione di probabilità

4. Sviluppo di un algoritmo di ricerca ottimale per la 9a opzione di distribuzione con il numero di misurazioni da N = 1 a 15

Per la tua versione della distribuzione di probabilità con il numero di eventi, sviluppa un algoritmo di ricerca ottimale, costruisci un albero di ricerca, spiega la sua forma, da cosa è causato?

Nel campo di composizione, impostare l'algoritmo di ricerca completo ottimale. Escludendo sequenzialmente le ultime misurazioni (prima), si consideri la dipendenza del numero medio di misurazioni, la probabilità di una soluzione incompleta e la segretezza residua dalla durata della ricerca. I risultati sono mostrati nella tabella 2.

Tabella 2 - Dipendenza dal numero medio di misurazioni,

segretezza residua, la probabilità di incertezza dal numero di misurazioni

n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
R 4 3.775 4.325 4.725 5.1625 5.375 5.5 5.65 5.7 5.7625 5.8 5.8
Pneop 0.55 0.7625 0.875 0 0 0 0 0 0 0 0 0 0 0 0
Sost 0.801 0.785 0.791 0.802 0.814 0.826 0.837 0.848 0.858 0.868 0.877 0.885 0.893 0.901

In questa tabella, Sres è stato considerato a un livello di confidenza di 0,9. "PrintScreen" del programma "Poisk" per diversi valori del numero di misurazioni è mostrato nelle Figure 8-11.

Quando il numero di misurazioni è inferiore a 4, appare la probabilità di una soluzione incompleta, poiché è impossibile controllare tutti gli eventi. Di conseguenza, non tutto deve essere controllato; l'opzione migliore sarebbe quella di controllare gli eventi più probabili. "PrintScreen" del programma "Poisk" con il numero di misurazioni inferiore a 3 è mostrato in Figura 12.

Costruiamo un grafico della potenziale segretezza rispetto al numero di dimensioni, che è mostrato nella Figura 13.

Figura 13 - Dipendenza del numero medio di misurazioni dal numero di misurazioni per la nona legge della distribuzione di probabilità

Figura 14 - Dipendenza della probabilità di una soluzione incompleta dal numero di misurazioni per la nona legge della distribuzione di probabilità

(3)

(4)

La probabilità di confidenza verrà modificata entro 0,7 ÷ 0,9. Di conseguenza, è stato ottenuto un grafico della dipendenza della segretezza residua dal numero di misurazioni, che è mostrato in Figura 15.

Nost (Pdov) Pdov = 0.9

Figura 15 - Dipendenza della segretezza residua ai valori della probabilità di confidenza 0.7 ÷ 0.9

Dal grafico presentato sopra, possiamo concludere che Pdov dovrebbe essere scelto vicino all'unità, questo porterà ad una diminuzione della segretezza residua, ma questo non è sempre possibile.

Figura 16 - Dipendenza della segretezza residua ai valori del numero di misurazioni 4,8,16

Da questo grafico segue che, con un numero elevato di misurazioni, la segretezza residua è maggiore, sebbene, logicamente, un numero maggiore di misurazioni comporti una diminuzione della probabilità di incertezza di soluzione.

Conclusione

In questo lavoro sono stati condotti studi per ottimizzare l'algoritmo di ricerca dicotomica utilizzando il programma Poick. Viene effettuato il confronto con l'algoritmo sequenziale. La forma della SPV è indagata per un'uniforme, esponenziale e data secondo la variante della distribuzione degli eventi. Sono state sviluppate abilità per utilizzare il programma Poick.

Nel corso del lavoro di laboratorio è stato effettuato lo sviluppo di algoritmi di ricerca ottimali per algoritmi di ricerca sequenziali e dicotomici.

È stato effettuato il calcolo della curva per la rimozione dell'incertezza e si è riscontrato che in alcuni casi è più corretto utilizzare un algoritmo di ricerca sequenziale, ed in altri è dicotomico. Ma questo può essere correlato solo alla distribuzione di probabilità originale.

La correttezza del programma Poisk è stata confermata dai calcoli effettuati nel pacchetto software Matcard 2001.

Bibliografia

1. Fondamenti della teoria della segretezza: un libro di testo per gli studenti della specialità 200700 "Ingegneria radiofonica" istruzione a tempo pieno / Università tecnica statale di Voronezh; Compilato da Z.M. Kanevsky, V.P. Litvinenko, G.V. Makarov, D.A. Maximov; a cura di Z.M. Kanevsky. Voronezh, 2006.202s.

2. Istruzioni metodologiche per il lavoro di laboratorio "Ricerca di algoritmi di ricerca" nella disciplina "Fondamenti della teoria della segretezza" per gli studenti della specialità 200700 "Ingegneria radiofonica" istruzione a tempo pieno / Università tecnica statale di Voronezh; compilato da Z.M. Kanevsky, V.P. Litvinenko. Voronezh, 2007, 54p.

3. STP VGTU 005-2007. Progettazione del corso. Organizzazione, ordine, esecuzione del regolamento, della nota esplicativa e della parte grafica.

Principali articoli correlati