Düzgünleştirilmiş Analiz akademi dışında mı kullanılıyor?


24

Did düzeltilmiş analiz algoritmaları ana akım analizi onun yolunu bulmak? Algoritma tasarımcılarının algoritmalarına düzgünleştirilmiş analiz uygulamaları yaygın mıdır?


11
İnsanlar akademi dışındaki algoritmalarına herhangi bir karmaşıklık analizi uygular mı?
Dave Clarke

2
@DaveClarke ne diyor; belki de titiz (veya önemsiz) analizler istemelidir . Birçok uygulayıcıları döngü yuvalama derinliğini saymak ve söylemek, onların algoritmaları bakmak bekliyoruz: "Bu !". O(n3)
Raphael

3
Simplex dışında herhangi bir düzgünleştirilmiş analiz kullanımına bakarken , tekniği keşfedenlerden birinin küratörlüğünde bir liste buldum .
Raphael

1
@DaveClarke IBM ya da HP ya da NTT’de çalışan insanlar hakkında nasıl? Bu tür bir analiz kullanmıyorlar mı?
Marcos Villagra

1
@DaveClarke Yaparım.
Kevin

Yanıtlar:


12

Yanılıyor olabilirim, ancak düzgünleştirilmiş analizi , kötü teorik güvenceleri olan algoritmaların uygulamadaki davranışını açıklamanın bir yolu olarak görüyorum (simpleks, k-araçları, vb.). Kötü bir kötü durum performansına sahip belirli bir sezgisel kullanımın haklılaştırılması dışında pratikte pürüzsüzleştirilmiş analiz kullanmanın ne anlama geleceğinden emin değilim ("Sezgiselim kötü niyetli davranışa blah blah oldu, ancak düzgünleştirilmiş bir analiz olacağını gösteriyor pratikte iyiyim vs vs ")


2
Sorun şu ana kadar düzeltilmiş analizler için büyük başarıların mevcut uygulamayı açıklamakta olmasından kaynaklanıyor, bu yüzden uygulayıcılar sadece "yaptığım her şeyin mantıklı gelebileceği iyi bir şey" diyerek tepki verebilirler :). Birisi şimdiye kadar az bilinen bir sezgisel çözümleme BECAUSE kullanmaya karar verdi mi bilmiyorum.
Suresh

Resmi düzleştirilmiş analiz çok zordur, teoride kimsenin bunu yapmaması için hiçbir sebep yoktur. Öte yandan, bir algoritmayı analiz etmek için kullanılan bir buluşsal yöntem olarak kabul ederseniz (yani, girdi yarı rasgeledir), o zaman muhtemelen her zaman kullanılır.
Yuval Filmus

3

İnsanların gerçek dünyadaki algoritmaları analiz etme yöntemleri akademi'den oldukça farklıdır. Akademi'de amaç, çalışma zamanında kesin olarak doğru bir üst sınır bulmaktır, gerçek hayatta ise amaç algoritmanın nasıl çalıştığını ve hangi ayarların çalışma süresini artırabileceğini anlamaktır. Akademi'de yasaklanan ancak pratikte kullanılan iki ana yöntem vardır:

  • Yaklaşım metodu. Burada bir algoritmanın çalışma zamanını tahmin etmeye çalışmak için birçok basitleştirici varsayım kullanıyorsunuz. Teorik fizikçiler (eskiden) yaptıklarına benzer.
  • Deneyler. Algoritmanızı çalıştırıyor ve birkaç istatistiği ölçüyorsunuz - her bir bölüme ne kadar zaman geçti, her bir fonksiyonun kaç kez çağrıldığı, her dalın ne kadar sıklıkla çalıştırıldığı vb. Bu bilgi algoritmayı optimize etmek için kullanılabilir. Deney, algoritmayı analiz ederken yapılan bazı yaklaşımların pratikte işe yarayıp yaramadığını bulmak için de kullanılır.

Bununla birlikte, ilgili bir akademik yayına bazı dolgu metinleri eklemek dışında, bir algoritmayı pratikte analiz etmenin çok yaygın olduğunu düşünmüyorum. Odak konuya bağlı olarak yazılım mühendisliği veya düşük seviyeli optimizasyondur.

Son olarak, düzgünleştirilmiş analiz, algoritmaların pratikte neden en kötü durumlarının önerdiğinden daha iyi çalıştığını açıklamak için kullanılabilecek bir buluşsal yöntemdir - yani girdilerin bazıları bir anlamda "rastgele". Bu sezgisel yaklaşım algoritma davranışını yaklaştırmak için kullanılabilir; eğer biri yaklaşım yöntemini kullanıyorsa.


"Akademik alanda hedef üst çalıştıran zamanında gitmekte olan bir kanıtlanabilir-doğru bulmak iken" - olan bir amaç değil amaç. Ortalama CS öğrencisi çok fazla göremese bile, ortalama vaka analizi üzerinde çok fazla çalışma vardır (çünkü nispeten zordur). “Algoritmanın nasıl çalıştığını anlamak” tartışmalı bir şekilde, akademideki tüm algoritmaların temelidir.
Raphael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.