Optimal algoritmalar. En hızlı sıralama nedir? Test algoritmaları

  • 28.06.2019

Geliştirilen programın algoritmasının optimizasyonu
Uygulamanız için bir algoritma geliştirme aşaması, program yaşam döngüsünün tüm zincirinde en zor olanıdır. Program kodu biçiminde uygulanmasının başarısı, büyük ölçüde, görevinizin tüm yönlerinin ne kadar derinlemesine düşünüldüğüne bağlıdır. Genel olarak, programın yapısındaki değişiklikler, program kodunda ince ayar yapmaktan çok daha büyük bir etkiye sahiptir. İdeal çözümler yoktur ve bir uygulama algoritmasının geliştirilmesine her zaman hatalar ve kusurlar eşlik eder. Burada, uygulamanın performansını en çok etkileyen algoritmadaki darboğazları bulmak önemlidir.

Ek olarak, uygulamanın gösterdiği gibi, halihazırda geliştirilmiş bir program algoritmasını iyileştirmenin bir yolunu bulmak neredeyse her zaman mümkündür. Elbette, gelecekte program kodunun parçalarının kısa bir süre içinde tamamlanmasıyla ilgili pek çok hoş olmayan sonuçtan kaçınmak için tasarımın başında bir algoritmayı dikkatli bir şekilde geliştirmek en iyisidir. Uygulama algoritmasını geliştirmek için zaman ayırın - bu, programı hata ayıklarken ve test ederken sizi baş ağrısından kurtaracak ve size zaman kazandıracaktır.

Program performansı açısından verimli bir algoritmanın, sorunu %100'e ayarlama gereksinimlerini asla karşılamadığı ve bunun tersi olduğu akılda tutulmalıdır. Yapısı ve okunabilirliği açısından fena olmayan algoritmalar kural olarak program kodunun uygulanması açısından verimli değildir. Bunun nedenlerinden biri, geliştiricinin, mümkün olan her yerde hesaplamalar için üst düzey iç içe yapılar kullanarak programın genel yapısını basitleştirme arzusudur. Bu durumda algoritmanın basitleştirilmesi, kaçınılmaz olarak program performansında bir düşüşe yol açar.

Bir algoritma geliştirmenin başlangıcında, uygulama kodunun nasıl olacağını tahmin etmek oldukça zordur. Bir program algoritmasını doğru bir şekilde tasarlamak için birkaç basit kurala uymanız gerekir:
1. Programın geliştirileceği görevi dikkatlice inceleyin.
2. Program için temel gereksinimleri belirleyin ve bunları resmi bir biçimde sunun.
3. Sunum biçimini belirleyin. giriş ve çıkış verileri ve yapıları ve olası kısıtlamalar.
4. Bu verilere dayanarak, görev uygulamasının program versiyonunu (veya modelini) belirleyin.
5. Görevi uygulamak için bir yöntem seçin.
6. Program kodunun uygulanması için bir algoritma geliştirin. Problemi çözme algoritması, program kodunu uygulama algoritması ile karıştırılmamalıdır.
Genel olarak, asla eşleşmezler. Bu, yazılım geliştirmedeki en kritik aşamadır!
7. Programın kaynak kodunu, program kodunun uygulama algoritmasına uygun olarak geliştirin.
8. Geliştirilen uygulamanın program kodunun hatalarını ayıklayın ve test edin.

Bu kurallar harfi harfine alınmamalıdır. Her özel durumda, programcı, program geliştirme metodolojisini kendisi seçer. Uygulama geliştirmenin bazı aşamaları daha ayrıntılı olabilir ve bazıları hiç olmayabilir. Küçük görevler için bir algoritma geliştirmek, program kodunu uygulamak için hafifçe değiştirmek ve ardından hata ayıklamak yeterlidir.

Büyük uygulamalar oluştururken, program algoritmasının ek detaylandırılmasını gerektirebilecek program kodunun ayrı parçalarını geliştirmek ve test etmek gerekebilir.
Çok sayıda edebi kaynak, programcıya görevlerin doğru algoritmalaştırılması için yardımcı olabilir. Verimli algoritmalar oluşturma ilkeleri iyi gelişmiştir. Bu konuda pek çok iyi literatür var, örneğin D. Knuth'un "Programlama Sanatı" kitabı.

Bilgisayar donanımı için optimize edilmiştir
Tipik olarak, yazılım geliştirici, uygulamanın performansının bilgisayar donanımına mümkün olduğunca az bağımlı olmasını sağlamaya çalışır. Bu durumda, programınızın kullanıcısının en son bilgisayar modeline sahip olmayacağı en kötü durumu dikkate almalısınız. Bu durumda, donanımın "revizyonu" genellikle uygulamanın performansını iyileştirmek için yedekler bulmanızı sağlar.
Yapılacak ilk şey, programın çalışması gereken bilgisayar çevre birimlerinin performansını analiz etmektir. Her durumda, neyin daha hızlı neyin daha yavaş olduğunu bilmek bir program geliştirmeye yardımcı olacaktır. Sistem kapasitesini analiz etmek, darboğazları belirlemenize ve doğru kararı vermenize olanak tanır. Farklı bilgisayar cihazlarının farklı bant genişliği vardır. Bunların en hızlıları işlemci ve RAM, nispeten yavaş olanları ise sabit disk ve CD sürücüsüdür. En yavaşları yazıcılar, çiziciler ve tarayıcılardır.

Kanaldaki tüm bozulmaların kesinlikle deterministik olduğunu ve yalnızca Gauss toplamsal gürültüsünün n(t) rastgele olduğunu ve spektral yoğunluğu N 0 ile ilk başta beyaz olduğu varsayıldığını varsayalım. Bu, bir sinyal u i (t) (sembol b i (i = 0,1, ..., m-1) iletildiğinde, gelen sinyalin model (3.38) ile tanımlanabileceği anlamına gelir:

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

burada tüm s ben (t) = ku i (t-τ) (i = 0, 1, ..., m-1) bilinmektedir. Karar devresi tarafından belirlenmesi gereken, yalnızca girişimin uygulanması ve gerçekten iletilen sinyalin indeksi i bilinmemektedir.

Ayrıca tüm si(t)'nin süresi T olan sonlu sinyaller olduğunu varsayacağız. Bu, iletilen sinyaller ui(t) sonluysa ve aynı süreye sahipse (sistem senkronsa) durum böyledir. kanalda çok yollu yayılma veya doğrusal bozulma yok, sinyal süresinde artışa neden oluyor (veya bunlar düzeltiliyor).

Aşağıda, her yerde sistemde güvenilir saat senkronizasyonunun sağlandığını, yani s(t) sinyalinin geldiği saat aralığının sınırlarının tam olarak bilindiğini varsayacağız. Senkronizasyon konuları, genel olarak optimal demodülatörlerin ve senkron iletişim sistemlerinin uygulanmasında çok önemlidir, ancak bunlar bu dersin kapsamı dışındadır. Göndermenin başlama anı s(t) sıfır olarak alınır.

Bu koşullar altında, sinyali 0-T saat aralığında analiz eden optimal (yani, maksimum olabilirlik kuralına dayalı) demodülatörün çalışması için algoritmayı tanımlayalım. Bunu yapmak için, sıfır hipotezine (s (t) = 0; z (t) = n (t)) göre tüm olası sinyaller için olabilirlik oranlarını bulmak gerekir.

Görev, sinyal spektrumunun genişliğinin sonsuz olması (sonlu olduğu için) ve bu nedenle sinyal uzayının sonsuz boyutlu L2 (T) olması nedeniyle karmaşıktır. Belirtildiği gibi bu tür sinyaller (veya sonsuz boyutlu vektörler) için olasılık yoğunluğu yoktur. Ancak, herhangi bir n sinyal kesiti için "boyutlu olasılık yoğunlukları" vardır (bkz. § 2.1).

İlk olarak, beyaz gürültüyü, aynı tek taraflı spektral güç yoğunluğu N 0 olan, ancak yalnızca belirli bir frekans bandında F = n / 2T olan yarı beyaz gürültü ile değiştiririz, burada n >> 1 olur. Önce ek bir hipotez düşünelim, yani Z(t)'nin gürültü olduğunu varsayacağız. Δt = 1 / 2F = T / n aracılığıyla saat aralığında n eşit uzaklıkta bölüm alalım. Yarı beyaz Gauss gürültüsü için bu bölümlerdeki Z 1, ...., Zn sayıları (2.49)'a göre bağımsızdır. Bu nedenle, alınan numuneler için n-boyutlu olasılık yoğunluğu

burada σ 2 = N 0 F yarı beyaz gürültünün dağılımıdır (gücüdür).

(6.17)'ye göre b i sembolünün iletildiği hipotezi altında, n (t) = z (t) - s i (t). Sonuç olarak, Z (t) bölümlerinin koşullu n-boyutlu olasılık yoğunluğu, z (tk) gürültü olan z (tk) -si (tk) farkı ile değiştirilirse, (6.18) ile aynı formülle belirlenir. bu hipotez altında:

s i sinyali için olasılık oranı (ek hipoteze göre), n bölüm için hesaplanır:

σ 2 varyansını şu ifadesiyle değiştiriyoruz: σ 2 = N 0 F = N 0 / (2Δt). Sonra

Yarı beyaz gürültü durumunda maksimum olabilirlik kuralına göre, karar devresi maksimum Λ i [n] sağlayan i değerini seçmelidir. Maksimum Λ i yerine, logaritmasının maksimumu bulunabilir:

(6.22)'deki ikinci terim t'ye bağlı değildir ve hipotezler karşılaştırılırken göz ardı edilebilir. Daha sonra (6.10)'a göre b i sembolünün iletildiği karar kuralı eşitsizlikler sistemi ile ifade edilebilir.

Şimdi beyaz gürültü için orijinal soruna dönelim. Bunu yapmak için, F şeridini genişleteceğiz, sonra n'nin sonsuz olma eğiliminde olan bölümlerin sayısı ve Δt sıfır olma eğiliminde olacaktır. (6.22)'deki toplamlar integrallere dönüşür ve dağlama çözümü aşağıdaki gibi tanımlanır:

İfade (6.24), optimal alıcının giriş salınımı z (t) üzerinde gerçekleştirmesi gereken işlemleri (işletim algoritması) belirler.

İncirde. m = 2 için 6.2, algoritmaya (6.24) göre çalışan bir alıcı cihazın blok diyagramını gösterir.

Burada "-" çıkarıcılar; Γ 0, Γ 1 - referans sinyallerinin jeneratörleri s 0 (t), s 1 (t); "KB" - kareler; ∫ - entegratörler; RU, T'nin katları olan zamanlarda (anahtarlar kapalıyken), minimum sinyale sahip dal sayısını belirleyen belirleyici bir cihazdır.

Şekildeki devrede m> 2 için. 6.2 ve aşağıdaki diğer şemalarda, RU'ya ulaşan sinyal işleme dallarının sayısı buna göre artar.

Hilbert uzayında


z ve s vektörleri arasındaki farkın normunu veya aralarındaki mesafeyi belirler *. Bu nedenle, algoritma (6.24) şu şekilde yazılabilir:

|| z - s ben ||

ve ona basit bir geometrik yorum verin: optimal demodülatör, alınan z(t) dalga biçimine "yakın" olan si (t) (b i sembolüne karşılık gelen) sinyallerininkini kaydetmelidir. Örnek olarak, Şekil. 6.3, sinyaller s 1 (t) ve s 0 (t) iletirken alınan sinyallerin z (t) iki boyutlu alanının optimal bölümlenmesini gösterir. 0 veya 1 sembolleri lehine karar verme alanları, sinyal noktalarını birleştiren ve onu ikiye bölen segmente dik olan 0-0 çizgisinin her iki tarafında bulunur.

Şek. Giriş sinyallerinin anlık değerlerinin tüm dinamik aralıklarında kare kanunu dönüşümünü sağlamak için tasarlanan 6.2 kareler, genellikle uygulanmasını zorlaştırır. Bu nedenle, (6.24)'e dayanarak, kare alma cihazları gerektirmeyen eşdeğer bir alım algoritması elde ederiz.

Parantezleri integral işaretinin altına genişletmek ve eşitsizliklerin her iki tarafındaki (6.24) terimini iptal etmek

alım algoritmasına varıyoruz:

burada E j, beklenen sinyal s j (t)'nin enerjisidir:


İkili bir sistem için, algoritma (6.25) tek bir eşitsizliği kontrol etmeye indirgenir

Nokta çarpımını doğrudan hesaplayan bir cihaz


aktif filtre veya korelatör olarak adlandırılır; bu nedenle, (6.25) algoritmasını uygulayan bir alıcıya korelasyon alıcısı denir.

* (n-boyutlu Öklid uzayı için bu norm eşittir)


İncirde. 6.4, (6.27)'ye göre çalışan bir alıcı cihazın blok şemasını göstermektedir. Burada × blokları çarpanlardır; Γ 0, Γ 1 - referans sinyallerinin üreteçleri s 0 (t) s 1 (t); ∫ - entegratörler; "-" - çıkarıcılar; RU, T'nin katları olan zamanlarda (anahtar kapalıyken) belirleyen bir çözücüdür, i = 0, 1 maksimum sinyale sahip dal sayısıdır.

ui (t) sinyalleri, tüm gerçekleşmeleri (ve sonuç olarak, tüm gerçekleştirmeler si (t) aynı enerjilere (E i = const) sahip olacak şekilde seçilirse), alma algoritması (6.25) (ve buna göre, uygulanması) basitleştirilmiştir (çıkartıcılara gerek yoktur) ve şeklini alır

(6.29)'dan demodülatör girişine gelen z(t) sinyali herhangi bir sayı ile çarpılırsa karar kuralının değişmeyeceği görülebilir. Bu nedenle, tüm sinyal gerçekleşmelerinin eşit enerjiye sahip olduğu bir sistem, optimal alım algoritmasının, gelen sinyalin "ölçek" bilgisini veya başka bir deyişle, kanalın iletim katsayısı k bilgisini gerektirmemesi bakımından farklılık gösterir. Bu önemli özellik, yaygın olarak aktif duraklama sistemleri olarak adlandırılan eşit enerji sinyal sistemlerinin yaygın olarak kullanılmasına yol açmıştır. Bu, özellikle kazancın dalgalandığı sönümlü kanallar için önemlidir (bkz. §6.7).

İkili bir sistem için eşitsizliğin (6.27) daha basit bir biçimde gösterilebileceğini unutmayın:


burada s Δ (0 = s 1 (t) - s 0 (t) fark sinyalidir; optimal şemanın uygulanmasını büyük ölçüde kolaylaştırır.

Eşitsizlik (6.30) sağlandığında, 1 sembolü kaydedilir, aksi takdirde - 0. Şekil 6'daki devrede (6.30) uygulamak için. 6.4 sadece bir dal gereklidir.

İncirde. 6.5, a, tek kutuplu darbelere sahip (pasif bir duraklama ile) ikili bir iletim sistemi için algoritmayı (6.30) uygulayan bir diyagramı gösterir: s 1 (t) = a, s 0 (t) = 0. Bu sinyaller için, s Δ ( t) = s 1 (t) = a, E 1 = a 2 T, E 0 = 0, λ = a 2 T / 2 ve (6.30) aşağıdaki formu alır:


Dikkate alınan ikili sinyal sistemi, en basit kablolu iletişim cihazlarında kullanılır. Radyo kanallarında olduğu gibi modern kablo kanallarında da yüksek frekanslı sinyaller kullanılır. Harmonik sinyalli en basit ikili sistemler, genlik (AM), faz (PM) ve frekans (FM) kaydırmalı anahtarlama sistemleridir.

İkili AM'de, s 1 (t) = acos (ω 0 t + φ), s 0 (t) = 0. Bu bölümdeki tüm sabitlerin (a, ω 0, φ) bilindiği varsayılır. Burada s Δ (t) = s 1 (t), E 1 = a 2 T / 2 ve E 0 = 0 olduğundan, kural (6.30) aşağıdaki gibi yazılacaktır:


Şekil 1'deki devre tarafından gerçekleştirilir. 6.5.6, Şek. 6.5, gelen sinyali referans sinyali cos (ω 0 t + φ) ile çarpmak için bir blok. Bu durumda eşik seviyesi λ̇, aT / (4RC)'ye eşittir.

İkili bir FM sistemi için s 0 (t) = a cos (tω 0 + φ), s 0 (t) = a cos (tω 0 + φ + π) = -s 1 (t). Bu, aktif bir duraklamaya sahip bir sistemdir ve bu nedenle (6.30'da λ = 0) Bu durumda karar kuralının aşağıdakine indirgendiğini doğrulamak kolaydır:


ve Şekil 2'deki aynı devre tarafından gerçekleştirilir. 6.5.6 λ̇ = 0'da. Bu durumda RU bir polarite ayırıcısı rolünü oynar.

Pirinç. 6.6. Gauss "renkli" gürültü için beyazlatma filtreli en uygun demodülatör

Kanaldaki Gauss gürültüsünün beyaz veya yarı beyaz olmadığı, ancak "renkli" olduğu, yani sinyal spektrum bandında eşit olmayan bir güç yoğunluğuna G (f) sahip olduğu durumu kısaca ele alalım. Demodülatör girişine gelen sinyal ve gürültünün toplamını k (i2πf) transfer fonksiyonuna sahip bir filtreden geçirelim, öyle ki G (f) | k (i2πf) | 2 sabit N 0 idi. Bu koşulu sağlayan ve yalnızca faz-frekans yanıtında farklılık gösteren k (i2πf) ile tüm olası filtrelerden, tersinir olan minimum faz bir seçilebilir. Açıkçası, filtre çıkışındaki gürültü yarı beyaz olacaktır: G out (f) = N 0. Bu nedenle, böyle bir filtreye beyazlatma denir.

si(t) sinyali beyazlatma filtresinden geçtikten sonra s "i(t) ile ifade ettiğimiz başka bir sinyale dönüşecektir. Şekli si(t) ve k(i2πf) bilinerek belirlenebilir. şimdi beyazlatma filtresinin çıkışından s "i (t) (i = 0, 1, ..., m-1) sinyallerini almak için en uygun olan demodülatöre salınımlar uygulayın, sonra Şek. 6.6, renkli gürültüye sahip s i (t) sinyalleri için açıkça optimaldir.

Şekil 2'deki şemada not edilmelidir. 6.2, 6.4 ve 6.5'e göre referans sinyali, beklenen gelen sinyallerle aynı başlangıç ​​fazlarına sahip olmalı veya başka bir deyişle gelen sinyallerle uyumlu olmalıdır. Bu gereklilik genellikle demodülatörün uygulanmasını zorlaştırır ve şekillerde gösterilen bloklara ek olarak, referans sinyallerinin fazlarını ayarlamak için tasarlanmış ek cihazların içine sokulmasını gerektirir.

Uygulanması için gelen sinyallerin ilk aşamaları hakkında kesin bir ön bilgi gerektiren tüm alım yöntemlerine tutarlı denir. Beklenen sinyallerin ilk aşamaları hakkındaki bilgilerin alınan sinyalin kendisinden çıkarıldığı durumlarda (örneğin, faz dalgalanıyorsa, ancak önceki sinyal elemanlarından tahmin edilebilecek kadar yavaşsa), alıma yarı-uyumlu denir. Gelen sinyallerin ilk aşamaları hakkında bilgi yoksa veya herhangi bir nedenle kullanılmıyorsa, alım tutarsız olarak adlandırılır (bkz. § 6.6).

Birçok uygulamada, bir görüntü dizisinin sonraki çok boyutlu karesinde görünebilecek anormalliklerin saptanması sorunu ortaya çıkar. Bu tür anormallikler, örneğin, orman yangınlarının odakları, tıbbi görüntülerdeki patolojik değişiklikler, korunan alandaki yeni nesneler vb. olabilir. Bu durumda, algılama sorunu şu şekilde resmileştirilir: Gözlemler yapılsın.

Uzay-zaman bağıntılı SP ve sıfır ortalamalı ve varyanslı bağımsız rastgele değişkenlerin SP. Parametre vektörü, örneğin bitişik görüntü çerçevelerinin olası karşılıklı uzamsal yer değiştirmelerini ve döndürmelerini hesaba katmaya izin verir.

Deterministik bir sinyalin ortaya çıkması, model (2.1)'de sadece son gözlemlenen çerçevelerin indeks bölgesinde (Şekil 1) bir değişikliğe yol açar:

yararlı sinyal örnekleri kümesi nerede.

Göz önünde bulundurulan koşullar altında, modelin (2.2) geçerliliği hakkında H1 alternatif varsayımı altında G bölgesinde bir anomalinin yokluğuna ilişkin H0 hipotezini test etmek için bir kural bulmak gerekir.

(2.1), (2.2) modellerinin bileşenlerinin verilen olasılıksal özellikleri için, W (Z | Н0) ve W (Z | Н1) gözlemlerinin karşılık gelen koşullu olasılık dağılım yoğunlukları (PDF'ler) belirlenebilir. Bu nedenle, algılama problemini çözmek için, olabilirlik oranının (LR) eşik seviyesi ile bir karşılaştırma kullanılmalıdır:

(2.3)

Hesaplamaları basitleştirmek için, koşullu PDF'yi ürünler biçiminde temsil ediyoruz: burada ZG, G alanındaki bir dizi gözlemdir; Z0, beklenen sinyalin alanına ait olmayan tüm gözlemlerin kümesidir. OP (2.3) şu şekilde yeniden yazılabilir:

. (2.4)

OP'ye (2.4) dahil edilen koşullu PDF'leri Gauss dağılımlarına göre yaklaşık olarak hesaplayacağız:

burada ve,, sırasıyla, yararlı bir sinyalin yokluğunda ve varlığında ZG gözlemlerinin koşullu matematiksel beklentileri ve uzamsal kovaryans matrisleridir.

(2.1), (2.2) gözlem modellerini dikkate alarak, koşullu ortalamalar için aşağıdaki formülleri elde etmek kolaydır. - sinyal bölgesine ait olmayan tüm mevcut gözlemler Z0 temelinde oluşturulan SP değerlerinin optimal tahmini. Uzamsal matrisler V0 ve V1 aynı çıkıyor: , optimal tahmin hatalarının kovaryans matrisi nerede.

Yukarıdaki bağıntıları (2.4), (2.5)'e yerleştirip logaritmayı aldıktan sonra, aşağıdaki sinyal algılama algoritmasını buluruz:

, (2.6)

nerede - algılama eşiği. Formül (2.6)'dan takip edildiği gibi, anormallikleri tespit etme prosedürü, G bölgesine ait olmayan tüm gözlemler temelinde bulunan en uygun tahmini bir gözlemden çıkararak müdahale eden görüntüleri telafi etmeyi içerir. Girişim yapan SP'leri telafi ettikten sonra, doğrusal ağırlıklı artıkların toplamı gerçekleştirilir

Blok matrislerin tersine çevrilmesi için Frobenius formülünü uygulayarak, istatistiklerin eşdeğer bir forma indirgenebileceği gösterilebilir:

nerede , - aşağıdakiler dışında tüm mevcut gözlemler temelinde oluşturulan değerin optimal tahmini; ... bu tahminin hatasının varyansıdır. Buna karşılık, biz buna "noktadan noktaya tahmin" diyeceğiz. Çok sayıda eleman ile G'nin tüm olası bölgelerinde anormallikler tespit edildiğinde, "bir noktaya tahmin", "bölgeye tahmin"den önemli ölçüde daha az hesaplama işlemi kullanılarak bulunabilir.

Optimal algılama prosedürünü kaydetmenin başka bir biçimi, yararlı sinyalin mevcut tüm görüntü çerçevelerini kaplayabileceği varsayımı altında elde edilebilir, yani. G alanı, tüm çok boyutlu ızgaraları içerir. Ardından en iyi tahmin ve algoritma (2.6) şu şekli alır:

, (2.8)

nerede ; girişim yapan görüntü kovaryans matrisidir.

Çok sayıda hesaplama işlemi nedeniyle prosedürün (2.8) doğrudan uygulanması zordur. Bununla birlikte, uzaysal simetrik matrisi iki üçgenin ürününe genişletmek , (2.8) şeklinde gösterilebilir

(2.9)

görüntü dizisinin ön "beyazlatılmasına" ve ardından ağırlıklarla ağırlıklandırma toplamına karşılık gelir. Çoğu durumda, bu yaklaşım, pratik için kabul edilebilir yarı-optimal "beyazlatma" algoritmalarının bulunmasına izin verir. Aynı zamanda, özellikleri beyazlatıcı olanlara yakın olan uyarlanabilir özyinelemeli filtrelerin bağımsız bir değerlendirmesi, bir görüntü dizisi işleme sisteminin nispeten basit bir teknik veya yazılım uygulaması için fırsatların aranmasında önemli bir yöndür. (2.6) ile ilgili olarak (2.7), (2.8) ve (2.9) algoritmalarının sahip olduğu yeni bir kalite, sinyal şekli ile ilgili olmayan zahmetli optimal tahmin veya beyazlatma işleminin ve nispeten basit ağırlıklandırmanın ayrılmasıdır. yararlı sinyalin biçimini dikkate alan toplama. Bu, hem bilinmeyen konum parametreleriyle anormallikleri tespit etme problemlerini hem de çeşitli sinyal türlerinin çok alternatifli tespit (tanıma) problemlerini oldukça basit bir şekilde çözmeyi mümkün kılar.

Sunulan sonuçlar, koşullu PDF'lerin önerilen normal dağılımlarla değiştirilmesinin geçerli olduğu koşulları netleştirmeyi mümkün kılmaktadır. Her şeyden önce, bu Gauss modelleri (2.1), (2.2) ile geniş bir sınıftır. Bu durumlarda, prosedürler (2.6), (2.7), (2.9) kesinlikle optimaldir. (2.1), (2.2) modellerinin Gauss olmayan bileşenleri için, optimallik için yeterli bir koşul, tahminin arka PDF'sine normal bir dağılımla yaklaşma olasılığıdır. Son koşulun, önemli uzay-zaman korelasyonları ile LB işlemenin birçok uygulamalı probleminde de karşılandığını ve genellikle yüksek a posteriori tahmin doğruluğu koşuluna eşdeğer olduğunu unutmayın.

Algoritmaların karmaşıklığını tahmin etme

6. Algoritmaların optimizasyonu

Şimdiye kadar, bilgisayar bilimi, minimizasyon probleminin matematiğin olağan kesinliği ile ortaya konması için yeterli bilgi toplamadı. Birkaç faktör bunu engeller.

Birincisi, hem tartışılmaz pratik değeri olan hem de matematiksel terimlerle açık bir şekilde tanımlanmış bir optimizasyon kriteri formüle etmek zordur. Örneğin, Turing makine komutlarının sayısını en aza indirme problemi ortaya atılabilir - matematiksel olarak iyi tanımlanmış bir kriter; ancak gerçek bir bilgisayardaki gerçek bir programın bir Turing makinesini simüle etmesi pek mümkün olmadığından pratik önemi tamamen belirsizdir. Gerçek bir makinede bir programın yürütme süresini en aza indirme problemini ortaya koymak mümkündür - pratik açıdan açık bir kriter. Bununla birlikte, yürütme süresi (bazen önemli ölçüde) bilgisayar mimarisine bağlı olduğundan ve modern bilgisayarların mimarisi az sayıda parametre ile tanımlanamayacağından, optimizasyon problemini matematiksel yöntemlerle çözmek imkansız olacaktır. Ayrıca, bir bilgisayarda diğerlerinden daha hızlı çalışan bir programın diğer bilgisayarda en hızlı olmayabilmesi de önemlidir. Mimarileri değerlendirmek için kıyaslama adı verilen özel programlar bile vardır.

İkincisi, görevin zorluğunun ne olduğu tam olarak belli değil. Bu sorunu çözen algoritmaların karmaşıklığının minimumu olarak tanımlanabilir. Ancak, minimum karmaşıklıkta bir algoritma var mı (bulunan algoritmanın gerçekten minimum olduğundan veya tam tersine minimum olmadığından nasıl emin olunur)? Uğraşacak bir şey var mı? Ve bu minimumu bulmak ne kadar zor? Bu sorular, algoritmaların karmaşıklığının alt tahminiyle ilgilidir (önceki adımlarda olduğu gibi üsttekiyle değil) (5, s. 89-92).

İncelenen problem için, onu çözen hiçbir algoritmanın bu alt sınırdan daha basit olamayacağını kanıtlamak mümkün müdür? İyi bilinen kare matris çarpma problemini alın. T (n) = 3n3 + n2 karmaşıklığına sahip bir algoritma sunulmaktadır. (8, s. 199-203) Muhtemelen en iyi algoritma değil, ancak alt sınır nedir? Ortaya çıkan matris n2 elemana sahiptir. Herhangi bir elemanı hesaplamak için, tek işlemcili bir makinenin en az bir işlemi gereklidir - bir işlemde iki eleman bulunamaz. Minimum algoritma için n2 eşitsizliklerini elde ederiz.<= T, min(n) <= 3n3+n2 . Вряд ли n2 - хорошая нижняя оценка, но уже известно, что n3 нижней оценкой не является, так как найдены более быстрые алгоритмы (в частности, алгоритм Штрассена). (8, стр. 211)

Program optimizasyonunun birkaç bağımsız yönü vardır ve bunlardan iki tanesini seçiyoruz:

Algoritma oluşturmak için bir yöntem seçimi ile ilgili optimizasyon;

Programdaki verileri temsil etmek için yöntem seçimi ile ilişkili optimizasyon.

İlk optimizasyon türü, doğası gereği küreseldir ve karmaşıklık fonksiyonunun düzeninde bir azalmaya yol açar - örneğin, bir algoritmayı T (V) = O (FS) ile T (V) = O (V4) olan bir algoritma ile değiştirmek ). Görevin alt görevlere nasıl bölündüğüne, bu bölümün ne ölçüde görevin kendisinin özelliği olduğuna veya yalnızca yapay bir teknik olduğuna bağlıdır. Buradaki genel yol gösterici yaklaşım, algoritmaların analizinin tersi olan bir dizi eylem olabilir. Özyinelemeli algoritma kullanılarak yapılan analizde, daha sonra çözülen bir denklem oluşturulur. Optimizasyon sırasında aşağıdaki zincir uygulanır:

İstenilen zorluk için formül ->

Karşılık gelen denklem (mümkün olanlardan biri) ->

Bir görevi alt görevlere bölmek için bir yöntem.

İkinci tip optimizasyon, programın yapısını bir bütün olarak değiştirmeden, bellek tasarrufuna ve / veya veri yapılarıyla çalışmayı basitleştirmeye, uygulama seviyesi (bizim yaptığımız) arasında bir "arayüz" sağlayan yardımcı prosedürlerin verimliliğini artırmaya yol açar üst düzey nesneler - grafikler, matrisler, metinler vb.) ve en basit veri türlerini (sayılar, semboller, işaretçiler) destekleyen makine düzeyi açısından düşünün. Bu genellikle karmaşıklık fonksiyonundaki bazı terimler için katsayılarda bir azalma ile sonuçlanır (başarılı optimizasyon ile, en anlamlı terim ile), ancak karmaşıklık fonksiyonunun sırası aynı kalır. (7, s. 204)

Her iki optimizasyon türü de birbirini tamamlar ve birlikte kullanılabilir.

Seçim problemlerini çözmek için algoritmalar. Tavlama Algoritması

Optimizasyonun ne olduğunu anlamak için ne işe yaradığını bulmanız ve hayatta her gün, çoğu zaman fark etmeden optimizasyonlarla karşılaştığımızı anlamanız gerekir. Diyelim ki bir sonraki maaşı aldıktan sonra bütçemizi dağıtmaya karar verdik ...

Stokastik belirsizlik koşulları altında bir teknik nesnenin, bir buhar jeneratörünün teknolojik sürecinin ve ekipmanının optimal kontrolü için varsayımsal bir mikroişlemci sisteminin bir dizi teknik aracı temelinde analiz ve sentez

Otomatik bir süreç kontrol sisteminin tasarımındaki kilit sorunlardan biri optimizasyon problemidir, otomatik bir süreç kontrol sisteminin etkinliği büyük ölçüde makul formülasyona ve başarılı çözümüne bağlıdır ...

Mobil abonelerin iletişim zamanını hesaplamak amacıyla kablosuz AD-HOC ağlarının bilgisayar simülasyonu

Optimizasyon, orijinal programın anlamını korurken kalitesini artırmak için bir programı belirli kriterlere göre değiştirme işlemidir. Program kodunun miktarını azaltmak için parçalara ayrılır - alt rutinler ...

Karayollarının modellenmesi ve optimizasyonu

Aşağıdaki tanımlamaları sunalım: Xi - i. aşamanın başında kalan fonlar; Uj - i - girişimine tahsis edilmesine karar verilen fon miktarı; Pi, bu işletmenin elde ettiği kârdır ...

Bir otomatik kontrol sisteminin yazılım ve simülasyon yöntemleri ile modellenmesi

Optimizasyon, sıralı tek yönlü çizelgeleme yöntemi (simpleks yöntem) ile gerçekleştirilir. Optimizasyon modu aşağıdaki iki alt modu içerir: başlangıç ​​koşullarının ve optimizasyon sınırlarının ayarlanması; optimizasyon çalışıyor...

IBM ILOG Plant PowerOps planlama sistemi kullanılarak üretim ve tedarik planının optimizasyonu

IBM ILOG Plant PowerOps dört modülden oluşur: Üretim Planlama, Toplu Boyutlandırma, Ayrıntılı Çizelgeleme ve Talep Tahsisi. Modüllerin her biri, optimizasyon sürecindeki belirli sorunları çözer ...

MicroCAP-7 yazılım paketindeki çalışmanın özellikleri

Parametrik optimizasyon, MC7 programında Powell yöntemiyle herhangi bir analiz türünde gerçekleştirilir: geçici analiz, küçük sinyal AC analizi ve doğru akım DC'de özelliklerin hesaplanması ...

NNSU im sitesi için metin içeriği oluşturma özellikleri. N.I. Lobaçevski

Yani site zaten var. Kullanıcı dostudur, harika bir tasarıma sahiptir ve bugün akla gelebilecek tüm tüketici özelliklerine sahiptir. Ama nedense yoklama göstergeleri durmuş bir saatin ibrelerini andırıyor...

Grafik sistemi AutoCAD ve OrCAD 9.2 yazılım paketinde elektrik devrelerinin tasarımı ve modellenmesi

elektrik devresi kinematik teyp Sonra, devreye optimizasyon parametreleri ekliyoruz, mevcut "Akım Değeri", bileşenlerin ilk "Başlangıç ​​​​Değeri" değerleri ve "Tolerans" ...

Çift bilgisayar masası tasarımının geliştirilmesi

Ürünlerin 3D tasarımı, parçalar için çizimlerin ve spesifikasyonların oluşturulması ve bir ürünün üretimi için gerekli malzemelerin hesaplanmasına ek olarak, "bCAD Furniture Maker", ekonomik bir üretim yapmanızı sağlar ...

IDEF0 standardına uygun emlak acentesi modelinin geliştirilmesi

Bu model "olmak" türüne aittir, yani model "olması gerektiği gibi" ilkesine göre inşa edilmiştir. Modeli oluşturma sürecinde bazı eksiklikleri düzelttim ...

Bir çift makine alımını seçmek için uygulama geliştirme

Tek boyutlu minimizasyon problemleri, amaç fonksiyonunun bir değişkene bağlı olduğu ve gerçek eksenin bir bölümünün kabul edilebilir bir küme olduğu en basit matematiksel optimizasyon modelini temsil eder.

"Optimum ekipman değiştirme süresinin belirlenmesi" programının geliştirilmesi

Pratikte karşılaşılması gereken önemli ekonomik sorunlardan biri, eski makinelerin, endüstriyel binaların, birimlerin, makinelerin vb. değiştirilmesi için en uygun stratejinin belirlenmesidir, diğer bir deyişle ...

İşletmede personel yönetimi bilgi sisteminin sistem analizi

Bir dizi sanal fotoğraf panoramasından sanal bir 3D turun oluşturulması

Bir panoramanın mükemmel bir şekilde yapıştırılması için, yani görünür "dikişler" olmadan yapıştırma için, kontrol noktaları çiftleri arasındaki mesafe minimum olmalıdır. Optimizasyon süreci hesaplar ...

Sayfa değiştirme algoritmaları. FIFO. İkinci deneme. LRU algoritması.

Sayfa değiştirme algoritmaları. Optimal algoritma. NRU algoritması.

Sayfa değiştirme algoritmaları

Her kesintide rastgele bir sayfa seçebilseniz de, nadiren kullanılan sayfayı silerseniz sistem performansı iyileşir.

Optimal algoritma

Sayfa sonu sırasında, bellekte belirli bir sayfa kümesi vardır. Her sayfa, ilk çağrıdan önce yürütülecek komutların sayısı ile işaretlenebilir. En uygun algoritma, en yüksek etikete sahip sayfayı kaldırır. Pratikte böyle bir algoritma pratik değildir, çünkü işletim sistemi belirli bir sayfaya ne zaman erişileceğini bilemez. Optimal algoritma, tekrarlanan bir çalıştırma ile bir deneyin parçası olarak uygulanabilir. Optimal algoritmanın sonuçları, etkinliklerini belirlemek için diğer algoritmaların sonuçlarıyla karşılaştırılabilir.

NRU (Yakın Zamanda Kullanılmayan) algoritması (yakın zamanda kullanılmayan sayfa)

Her sayfa için tablo girişinde 2 bit vardır:

R biti (erişim biti), sayfaya her erişildiğinde bire ayarlanır. Bu biti temizlemek mümkündür, örneğin, uzun süredir erişilmeyen sayfaları ayırt etmek için her n zamanlayıcı tik;

Sayfa değiştirildiğinde M biti (değiştirme biti) bire ayarlanır. Silerken sayfanın diske yazılması gerektiğini belirtir.

R ve M bitlerinin değerlerine göre bir sayfa kesmesi ile işletim sistemi tüm sayfaları 4 sınıfa ayırır. En alt sınıftan bir sayfa silinmek üzere rastgele seçilir. Algoritmanın uygulanması kolaydır ve oldukça yeterli bir sonuç verebilir.

FIFO algoritması

İşletim sistemi, bellekteki tüm sayfaların bir listesini tutar. Liste, sayfaların göründüğü sıraya göre sıralanır. Sayfa sonu, bir sayfayı listenin başından kaldırır. Algoritma nadiren en saf haliyle kullanılır.

Algoritma "ikinci deneme"

FIFO algoritmasının bir modifikasyonudur. Sayfa kesmede R biti listedeki ilk sayfada incelenir, bire eşit ise sayfa listenin sonuna yerleştirilir ve R biti temizlenir ve sonraki sayfa kontrol edilir. Bu algoritma, zamanlayıcının son n tıklamasında erişilmemiş bir sayfa için listeyi arar. Tüm sayfalara bağlantılar varsa, algoritma normal bir FIFO'ya dönüşür.

Algoritma "saat"

Önceki algoritma doğrudur, ancak etkisizdir, çünkü tüm sayfaları sürekli olarak listede hareket ettirir. Bu nedenle, sayfa kayıtlarını dairesel bir listede saklamak ve hücrelerden birine işaretçi kullanmak daha iyidir. Bir sayfa sonu oluştuğunda, işaretçi tarafından gösterilen sayfanın R biti kontrol edilir. R bitine bağlı olarak, kaydın içeriği değişebilir ve işaretçinin değeri, tüm listeyi değiştirmekten çok daha hızlı bir şekilde değişir. Algoritma, doğrudan uygulama dışında, "ikinci deneme" algoritmasıyla tamamen aynıdır.


LRU (Son Kullanılan) algoritması, en çok kullanılmayan sayfa

Bu algoritma, son birkaç komutta birden çok kez erişilen sayfaların sonraki komutlarda da kullanılmasının muhtemel olduğu ve bunun tersi olduğu gözlemine dayanmaktadır. Algoritma, bir sayfa kesintisi meydana geldiğinde, en uzun süredir erişilmeyen sayfanın bellekten kaldırılmasıdır. Bu algoritmanın uygulanması ucuz değildir. Tam uygulama için, son kullanılan sayfa listenin en üstünde olacak şekilde bellekteki tüm sayfaların bağlantılı bir listesini tutmak gerekir. İşin zor yanı, listenin her bellek erişimiyle güncellenmesi gerektiğidir. Bu yaklaşımla, sayfayı bulmak, silmek ve listenin başına eklemek çok uzun zaman alıyor. Bu algoritmayı uygulamak için donanım yöntemleri vardır.

İlk yöntem, bilgisayarı her komuttan sonra otomatik olarak artan özel bir N-bit sayacıyla donatmayı gerektirir. Ayrıca sayfa tablosundaki her girişin bu sayacın değerini saklayacak bir alanı olmalıdır. Belleğe her erişimden sonra, sayaç değeri, erişilen ilgili sayfadaki tabloda bir kayıtta saklanır. Bir sayfa sonu oluşursa, bellek yöneticisi tüm tablodaki sayıları kontrol eder ve en küçüğünü arar. Bu sayfa uzun süredir kullanılmamaktadır.

Donanım uygulaması için ikinci seçenek, N-sayfa blokları olan bir sistemde, başlangıçta sıfıra eşit olan NxM boyutunda bir donanım matrisinin desteklenmesidir. k sayfasına erişirken, donanım k'inci satırın tüm bitlerini bire, ardından k'inci sütunun tüm bitlerine sıfır atar. Herhangi bir zamanda, en küçük ikili değere sahip dize, kullanılmayan en uzun dizedir.