Kitaptan Algoritmalar.


358

Paul Erdos, Tanrı'nın her matematik teoreminin en zarif kanıtını tuttuğu “Kitap” hakkında konuştu. Bu bile bir kitaptan esinlendi (şu anda 4. baskısında olduğuna inanıyorum): Kitaptaki Kanıtlar .

Tanrı'nın algoritmalar için benzer bir kitabı olsaydı, hangi algoritmanın aday olacağını düşünüyorsunuz?

Mümkünse, lütfen tıklanabilir bir referans ve çalışmasını sağlayan anahtar öngörüler sağlayın.

Cevap başına sadece bir algoritma lütfen.


11
Harika soru! [Düzenle:} Bir soru. Algoritmalar ve veri yapıları arasındaki çizgiyi nerede çizeriz? Bir algoritmaya ilişkin temel içgörü bir veri yapısıyla yakından ilişkiliyse (örneğin, ters Ackermann fonksiyonunda UNION FIND)?
Ross Snider

4
Böyle bir kitap için harika bir kaynak ve belki de aday "Algoritmalar Ansiklopedisi" springer.com/computer/theoretical+computer+science/book/…
Marcos Villagra

21
Oldukça zor olduğunu düşündüğüm algoritmaların (KMP, doğrusal sonek dizileri) başkaları tarafından "Kitaptan" olduğu düşünülmesine biraz şaşırdım. Bana göre, "Kitaptan" basit ve açık anlamına gelir, ancak yalnızca dikkatle. Başkalarının "zarif" nasıl yorumladıklarını merak ediyorum.
Radu GRIGore

49
@supercooldave Tanrıya inanmak zorunda değilsin, ama kitabına inanmalısın. ;-)
Ross Snider

10
1985'teki bir konferansta, Erdős, “Tanrı’ya inanmak zorunda değilsin, ancak Kitaba inanmalısın” dedi.
Robert Massaioli,

Yanıtlar:


116

Sendika bulma en iyi algoritması / veri yapısı ( Disjoint Set Forest ) spagetti yığınına dayanan güzel bir sorundur . Zeki bir çocuğa açıklamak için yeterince basit ve sezgisel olsa da, çalışma süresine sıkı sıkıya bağlı kalmak birkaç yıl aldı. Nihayetinde, davranışının, keşfi hesaplama açısından bir bakış açısına işaret eden bir fonksiyon olan ters Ackermann Fonksiyonu ile ilişkili olduğu keşfedildi (ve aslında Hilbert's On the Infinite'e dahil edildi ).

Wikipedia, Disjoint Set Forests için iyi bir giriş sağlar .


109

Knuth-Morris-Pratt string eşleşmesi. Şimdiye kadar göreceğiniz en zarif sekiz kod satırı.


4
Bunun bir zamanlar belli olmayan ve şimdi açık olan bir şey olduğunu farketmek akılsızca aklıma geldi çünkü onlar ortaya çıktılar ve öğrendik ... Sanırım Carr'ın tarih teorisini Matematik ve Bilgisayar Bilimleri'ne uygulamalıyız. .
Ritwik Bose

1
Açıklamasına göre, bunun Boyer-Moore hızlı substring aramayla ilgili olduğunu söyleyebilirim.
bart,

2
@Mechko Bu algoritmanın aynı anda ve bağımsız olarak ayrı insanlar tarafından keşfedilmesi gerçeği, bir dereceye kadar bariz olduğunun bir göstergesidir. Bir şeyin “açık” olup olmadığı, proje kısıtlarının ve daha geniş programlama ortamının bir işlevidir. (1) hızlı metin aramaya ihtiyacınız varsa ve (2) gerçekten O (n) algoritmalarının öneminin farkındasınız ve (3) daha önce kısmi eşleşmelere sahip metinlerle karşılaştınız ve (4) zamanınız var "doğru" şeyler yapmak, o zaman bu algoritma muhtemelen açıktır.
Matt Gallagher

Gelen bir röportajda Knuth algoritması fikri Stephen Cook okuyan geldiğini söyledi İki yönlü sonlu Otomaton'u palindrom için.
Kaveh

@Kaveh Lütfen orijinal KMP makalesinden Bölüm 7'yi (Tarihsel Notlar) okuyun. Harika açıklamalar var. Morris hakkında "sistemin diğer uygulayıcıları anlayamayacak kadar karmaşık" bir metin editörü yazmak. Knuth hakkında "Knuth'un otomata teorisinin, gerçek bir programlama problemini daha önce çözebildiğinden daha iyi çözmeyi öğrettiği ilk deneyiminde." Ve "Knuth, Morris'in Cook'un teoremini bilmeden algoritmayı zaten keşfettiğini öğrenmeye zorlandı;" EĞLENCE.
Hendrik Oca

93

Blum, Floyd, Pratt, Rivest ve Tarjan algoritması için bulmak k bir sıralanmamış listenin eleman inci güzel algoritmadır doğrusal zamanda ve sayılar çünkü sadece çalışır sadece sağ Usta Teoremi sığacak şekilde. Aşağıdaki gibi gider:

  1. Beş elementin her bir sırasını sıralayın.
  2. Her birinde medyanı seç.
  3. Bu listenin ortancasını bulmak için tekrarla.
  4. Medyanların medyanı üzerindeki eksen (Quicksort'ta olduğu gibi)
  5. Listenin uygun tarafını seçin ve o listede konumlandırın ve tekrarlayın.

3
Bu benim en sevdiğim algoritmalardan biri. Chazelle'in tutarsızlık kitabından öğrendiğim bir sezgiyi seviyorum: öğelerinin gruplarının ortancaları kümesi , giriş numaralarının sıralı listesindeki aralıklar için -net gibidir . Bu yüzden algoritma genel bir paradigma izler: bir -net hızlı hesapla , problemi net olarak çöz, kesin çözümü elde edene kadar çözümü düzeltmek için girişin bir kısmını tekrarla. çok kullanışlı bir tekniktirϵ ϵ1/ϵϵϵ
Sasho Nikolov

5
BTW, grupların boyutunu değiştirdikten sonra, sabitler o kadar büyülü değildir. Elbette Master teoreminde doğru şeyi verecek şekilde optimize edilmişlerdir
Sasho Nikolov

Ruby uygulaması, gist.github.com/chadbrewbaker/7202412 Algoritmanın (sabit, log) boşluk kullanan bir algoritması var mı, yoksa medyanları tutmak için doğrusal kazıma boşluğu mu kullanmak zorundasınız?
Chad Brewbaker

2
"Bu sadece işe yarıyor çünkü sayılar ana teoremine tam olarak uyuyor" iddiası doğru değil. Eğer numarayı değiştirin daha büyük bir sayı ile , o var iki sayı daha az toplamı için bunu görmesi kolaydır yakınsama ve , bu nedenle tüm yeterince büyük işi. çalışan ilk sayıdır, tek değildir. N 1 3 / 4 0 N 55n13/40n5
Sawin

88

İkili Arama , şimdiye kadar karşılaştığım en basit, güzel ve kullanışlı algoritma.


Zarif olanı sezgisel olarak değiştirirdim. Bu konuda zarif bir şey yok; sadeliği gerçek güzelliğidir.
Robert Massaioli

@Robert Massaili: Zarif olanı güzel ile değiştirdim. Bu konuda haklıydın.
michalmocny

2
Ve delicesine doğru yazmak zor - bkz. " İkili arama yapabilen programcıların% 10'undan biri misiniz? "
jon

İlk lisans algoritmaları dersimde 2-3 problemi elle çözmemiz gereken 15 dakikalık kısa sınavlar yaptık. Böyle bir ilk sınav ikili arama ağacı ve yığınlar hakkında iki soru içeriyordu. İkili arama sorununu yanlış bir şekilde aldığımı öğrenmekten utandım ve dehşete düşürdüm, yaklaşık 30 kişilik bir sınıfta iki doğru cevabın bulunduğunu söylemeden önce. Ancak bunu bilerek bile, profesyonel topluluğun haklı çıkması 15 yıl sürdü.
Stella Biderman

84

Ben görmemek şaşırıyorum Floyd-Warshall algoritmasını burada tüm çiftleri en kısa yollar için:

d[]: 2D array. d[i,j] is the cost of edge ij, or inf if there is no such edge.

for k from 1 to n:
  for i from 1 to n:
    for j from 1 to n:
      d[i,j] = min(d[i,j], d[i,k] + d[k,j])

En kısa, en açık olmayan en önemsiz algoritmalardan biri ve performansı, kenarları olabileceğini düşündüğünüzde çok acayip . Dinamik programlama için poster çocuğum olacak!O ( n, 2 )O(n3)O(n2)


2
Bu algoritma ayrıca çok düzenli bir şekilde genelleştirilebilir. Bakınız örneğin r6.ca/blog/20110808T035622Z.html ve cl.cam.ac.uk/~sd601/papers/semirings.pdf
Mikhail Glushenkov


73

Belki biraz önemsiz görünebilir (özellikle diğer cevaplarla karşılaştırıldığında), ancak Quicksort'un gerçekten zarif olduğunu düşünüyorum . Bunu ilk gördüğümde gerçekten karmaşık olduğunu düşündüğümü hatırlıyorum, ama şimdi her şey çok basit görünüyor.


10
Quicksort ayrıca bir algoritmanın tam olarak ne olduğuna dair ilginç sorular da ortaya çıkarmaktadır. Örneğin, standart şık Haskell uygulaması tam olarak standart sahte kod tanımına benziyor , ancak farklı asimptotik karmaşıklığa sahip. Öyleyse, Quicksort sadece böl ve ele geçir hakkında mı yoksa zeki yerinde gösterici aracı mı, Quicksort'un vazgeçilmez bir parçası mı? Quicksort bile tamamen işlevsel bir ortamda uygulanabilir mi ya da değişkenlik gerektiriyor mu?
Jörg W Mittag

2
Algoritmanın "özü" veya "ahlaki" fikri, elbette güzel E. Eratosthenes Elekleri'nden, Melissa E. O'Neill ( cs.hmc.edu/~oneill/papers/Sieve-JFP). pdf ) ve quicksort tartışması bu makalenin LtU tartışmasından ( lambda-the-ultimate.org/node/3127 ) geliyor, özellikle şu yorumdan
Jörg W Mittag

8
@ Jörg: Bağlantılı listelerde hızlı bağlantıyı uygulamak tamamen mantıklıdır ve dizilerdeki yerinde uygulamasıyla aynı asimptotik çalışma süresine sahiptir (heck, dizilerdeki yerinden saf olmayan uygulama bile aynı çalışma süresine sahiptir) - ortalama ve en kötü durumda. Alan kullanımına gelince, bu gerçekten farklıdır, ancak “yerinde” sürümünün bile kolayca göz ardı edilen bir gerçek olmayan sabit alan (çağrı yığını!) Gerektirdiği söylenmelidir.
Konrad Rudolph

Ayrıca Vladimir Yaroslavskiy'nin Dual-Pivot Quicksort'tan bahsetmeye değer. Bu, en az% 20 daha hızlı orijinal hızlı bağlantı
SaveTheRbtz

Teoride Quicksort basittir (4 adımda özetlenebilir) ve yüksek düzeyde optimize edilebilir, ancak pratikte doğru şekilde kodlamak çok zordur. Bu yüzden oyumu alamadım.
Dennis,


50

Miller-Rabin asallık testi (ve benzeri testleri) Kitabında olmalıdır. Buradaki fikir, olasılıkla asal olmayan sayıya şahit aramak için primerlerin özelliklerinden (yani Fermat'ın küçük teoremini kullanarak) faydalanmaktır. Yeterli rastgele testten sonra tanık bulunamazsa, sayı asal olarak sınıflandırılır.

Bu notta, PRIMES'in P de olduğunu gösteren AKS ilkellik testi kesinlikle Kitap'ta olmalı!


49

Schwartz-Zippel lemması ile polinom kimliği testi :

Biri sizi gecenin ortasında uyandırdı ve sizden kimlik için iki tek değişkenli polinom ifadesini test etmenizi isterse, bunları normal ürün toplam formuna indirger ve yapısal kimliği karşılaştırırsınız. Ne yazık ki, azaltma üssel zaman alabilir; Boole ifadelerini düşürücü normal forma indirgemeye benzer.

Rastgele randomize algoritmaları seven bir sınıf olduğunuzu varsayarsak, bir sonraki girişiminiz, polinomları yeterince testten geçmeleri durumunda özdeş olmalarının muhtemel olduğunu ilan ederek, karşı örneklerin aranmasında rastgele seçilen noktalarda polinomları değerlendirmek olacaktır. Schwartz-Zippel lemması, puanların sayısı arttıkça, yanlış bir pozitif şansın çok hızlı azaldığını göstermektedir.

Polinom zamanında çalışan problem için deterministik bir algoritma bilinmemektedir.


Bu uzun zaman önce önerilmiş olmalı! Teşekkürler!
arnab

1
Kitapta öne çıkan bir yeri hak eden birkaç başka randomize algoritma daha vardır. Bunlar için deterministik ve olasılıksal alternatifler arasındaki karşıtlık daha az dikkat çekicidir: deterministik bir algoritma genellikle var olmakla birlikte çok daha karmaşıktır.
Vognsen Per

Bir kaç yıl önce biri bana sordurana kadar bir kağıt üzerinde çalışırken aynı algoritmayı bağımsız olarak icat ettim, Schwartz-Zippel lemma değil mi? Ve dedim ki, bu nedir? :)
Helyum

46

Derinlik İlk Arama . Diğer birçok algoritmanın temelidir. Aynı zamanda aldatıcı bir şekilde basittir: Örneğin, BFS uygulamasındaki kuyruğu bir yığınla değiştirirseniz, DFS alıyor musunuz?


1
Aynı zamanda Prolog uygulamasının temelidir!
muad

1
BFS ile eksik olduğum bir yığının ne anlamı var? Cevabın "evet, DFS alıyorsunuz" olduğunu düşünürdüm.
Omar Antolín-Camarena

1
Herkes bu sorunun önemsiz olduğunu düşünüyor gibi görünüyor. Ayrıca, herkes cevabın "evet" olduğunu düşünüyor, ki bu yanlış. Yanıt aslında "hangi BFS uygulamasına başladığınıza bağlı" dır. Bkz. Cs.stackexchange.com/questions/329/… (Bu, CS.SE'nin beta aşamasına yardımcı olmak için gönderdiğim bir soru)
Radu GRIGore

Ayrıca burada kısaca tartışılmaktadır: ics.uci.edu//~eppstein/161/960215.html
Radu GRIGore

42

Dijkstra algoritması : negatif olmayan kenar yolu maliyeti olan bir grafik için tek kaynaklı en kısa yol problemi. Her yerde kullanılır ve orada en güzel algoritmalardan biridir. İnternet, onsuz yönlendirilemez - IS-IS ve OSPF (Önce Önce En Kısa Yolu Aç) yönlendirme protokollerinin temel bir parçasıdır.

  1. Her düğüme bir mesafe değeri atayın. İlk düğümümüz için sıfıra, diğer bütün düğümler için sonsuzluğa ayarlayın.
  2. Tüm düğümleri görünmeyen olarak işaretle. İlk düğümü geçerli olarak ayarla.
  3. Geçerli düğüm için, tüm ziyaret edilmeyen komşularını göz önünde bulundurun ve geçici mesafelerini (ilk düğümden) hesaplayın. Örneğin, geçerli düğüm (A) 6 olan mesafeye sahipse ve onu başka bir düğüme (B) bağlayan bir kenar 2 ise, B ila A arasındaki mesafe 6 + 2 = 8 olacaktır. Bu mesafe önceden kaydedilmiş olan mesafeden az ise (başlangıçtaki sonsuzluk, ilk düğüm için sıfır), mesafenin üzerine yazın.
  4. Mevcut düğümün tüm komşularını dikkate aldığımızda, onu ziyaret edilmiş olarak işaretleyin. Ziyaret edilen bir düğüm bir daha hiç kontrol edilmeyecek; Şimdi kaydedilen mesafe son ve minimumdur.
  5. Tüm düğümler ziyaret edilmişse, tamamlayın. Aksi halde, görülmeyen düğümü en küçük mesafeye (ilk düğümden) sonraki "geçerli düğüm" olarak ayarlayın ve 3. adımdan itibaren devam edin.


40

Gentry'nin Tamamen Homomorfik Şifreleme Düzeni (ideal kafesler üzerinden veya tamsayılar üzerinden) çok güzel. Üçüncü bir tarafın şifreli veriler üzerinde özel bir anahtara erişmeden keyfi hesaplamalar yapmasına izin verir.

Şifreleme şeması birkaç keskin gözlemden kaynaklanmaktadır.

  • Tamamen homomorfik bir şifreleme şeması elde etmek için, sadece toplama ve çarpma üzerinde homomorfik olan bir şemaya sahip olmak gerekir. Bunun nedeni toplama ve çarpma işlemlerinin (mod 2) AND, OR ve NOT geçitlerini (ve dolayısıyla Turing Completeness) almak için yeterli olmasıdır.
  • Eğer böyle bir şemanın olması gerekiyorsa, ancak bazı sınırlamalar nedeniyle, sadece bazı sonlu derinlikteki devreler için gerçekleştirilebildi ise, o zaman kişi gizlilikten ödün vermeden devre derinlik sınırlamasını sıfırlamak için şifre çözme ve yeniden açma prosedürünü homomorfik olarak değerlendirebilir.
  • Şema için şifre çözme fonksiyonunun devre versiyonunun derinliğini "ezmek" ile, kişi başlangıçta sonlu, sığ devrelerde isteğe bağlı sayıda hesaplama ile sınırlı bir şema mümkün olabilir.

Tezinde, Craig Gentry kriptografide uzun süredir açık (ve muhteşem) bir problem çözdü. Tamamen homomorfik bir şemanın mevcut olması, başka türlü göz ardı edebileceğimiz hesaplanabilirlik için bazı yapısal bir yapı olduğunun farkında olmamızı gerektirir.

http://crypto.stanford.edu/craig/craig-thesis.pdf

http://eprint.iacr.org/2009/616.pdf

http://portal.acm.org/citation.cfm?id=1666420.1666445



38

Strassen'in matris çarpımı algoritması .


Optimal olup olmadığını öğrenene kadar bekleriz.
Thomas Ahle

En azından asimptotik olarak optimal değil ... Sanırım Strassen'in algoritmasını dahil etmek seni ilk önce Karatsuba'nın algoritmasını dahil etmeye zorluyor.
Timothy Sun


34

Sonek dizileri oluşturmak için doğrusal zaman algoritması gerçekten güzeldir, ancak hak ettiği tanıma ulaşamamıştır. Http://www.cs.helsinki.fi/u/tpkarkka/publications/icalp03.pdf


Ben do it düşünüyorum etmiştir aksi düşünüyorum kılan - hak tanıma aldı? Örneğin, SeqAn C ++ dizi analiz kitaplığında uygulandı.
Konrad Rudolph

Şimdi, pratikte çok daha hızlı olmasına rağmen, bir o kadar güzel olmasa da, pratikte çok daha hızlı olabilen birkaç başka doğrusal ve doğrusal olmayan zaman eki dizisi yapı algoritmasının mevcut olduğunu belirtmekte fayda var. "Sonek sıralamada etkili, çok yönlü bir yaklaşım", Deneysel Algoritma Dergisi (JEA), Cilt 12, Haziran 2008 bu satırlar boyunca bazı deneysel sonuçlara sahiptir.
Raphael

@ Raphael: Ben p üzerinde gerçeği biraz temkinli. Bu JEA kağıt 3, onlar size herhangi kağıtları biliyor musunuz O (n ^ 2 günlük n) bağlı bir "gevşek" ... olan "inanmak" yalnızca ne vermek kanıtlanabilir doğrusal zamanlı daha pratikte hızlıdır algoritmalar Skew Algoritması?
user651 22:11

32

Gauss elimine etme. Öklid GCD algoritmasından genelleştirme sırasını Knuth-Bendix'e kadar tamamlar.


BTW, genelleme dizisi nedir ve Buchberger'in Grobner temeli için algoritması nereye uyuyor? (Bu Knuth-Bendix'te benzer görünüyor, ama bir yerde bir nevi Gauss eleme genelleştirir bir söz gördüm ...)
ShreevatsaR

6
dizi şöyledir: Öklid GCD -> Gauss Eliminasyonu -> Buchberger -> Knuth-Bendix. Biri aynı zamanda (Gauss Eliminasyonu yerine) tek değişkenli polinom bölünmesi ve modulo koyabilir (genelleme sırasına göre Gauss Eliminasyonundan 'ayrı' dır, GE çok değişkenli derece 1'dir, polinom halkası tek değişkenli sınırsız derecedir, Buchberger'in çok değişkenli derecesi vardır. genelleme atlaması, değişkenlerin eklenmesi nedeniyle EGCD'den GE'ye veya polinom halkasına büyük, sınırsız imza nedeniyle Buchberger'den KB'ye büyüktür
Mitch

+1: Öklid algoritması en ünlü denklemi ax-by = 1'i matematikte çözer. Neden CS’de daha sık görünmüyorsa bu bir gizemdir.
Tegiri Nenashi

32

Rezervuar örneklemesi için algoritma ve bunun kanıtını ilk gördüğümde etkilendim . Son derece basit bir çözüm ile tipik "zeka" tipi bir bilmecedir. Hem algoritmalar hem de matematik teoremleri için kesinlikle kitaplara ait olduğunu düşünüyorum.

Kitaba gelince, hikayeye göre Erdös öldüğünde ve cennete gittiğinde Tanrı ile görüşmeyi talep etti. Talep kabul edildi ve toplantı için Erdös'in tek bir sorusu vardı. "Kitaba bakabilir miyim?" Tanrı evet dedi ve Erdös'ü ona yönlendirdi. Tabii ki çok heyecanlı olan Erdös, kitabı sadece aşağıdakileri görmek için açar.

Teorem 1: ...
Kanıt: Açık.

Teorem 2: ...
Kanıt: Açık.

Teorem 3: ...
Kanıt: Açık.


4
Teorem 4:… Kanıt: okuyucuya alıştırma.
jon

31

Kaplumbağa ve tavşan Algoritması . Sevdim çünkü hayatım boyunca onu bulmaya çalışarak harcadığımdan bile, böyle bir Fikir bulmamın mümkün olmadığından eminim.


6
Sorunu aynı asimptotikle çözen ve algoritmik bir tasarım deseni izleyen aptal algoritmayı biliyor musunuz? İteratif derinleşmeden bahsediyorum. İlk yinelemede kökün 2. ^ nci halefi ile başlarsınız ve yineleme için ileride 2 ^ n halefi beklersiniz. Her yinelemeyle adımlarınızın bazılarını geri çekseniz bile, arama yarıçapının geometrik büyüme hızı, asimptotiği etkilemeyeceği anlamına gelir.
Per Vognsen

30

Öklid'in sonsuz sayıda asalın kanıtı olarak temel ve önemsiz bir örnek:

MAX-CUT için 2-yaklaşım - Her tepe noktası için bağımsız olarak, eşit olasılıkla iki bölümden birine atayın.


6
Evet, çok güzel bir algoritma. Daha az önemsiz olarak, başka bir 2 faktörün maliyetine bağlı olarak, bu algoritma ayrıca sadece grafik kesme işlevini değil, herhangi bir alt modüler işlevi en üst düzeye çıkarmak için de çalışır . Bu, FOCS 07’den Feige, Mirrokni ve Vondrak’ın bir sonucudur
Aaron Roth

30

Her zaman Christofides’in algoritması için kısmi oldum, bu metrik TSP’ye (3/2) yaklaşıyor. Aslında, lütfen beni kolay ara, ama daha önce gelen 2-yaklaşım algoritmasını sevdim . Christofides'in tuhaf derece köşeleri eşleştirerek (tüm kenarları çoğaltmak yerine) minimum ağırlık alan bir ağaç Eulerian yapma hilesi basit ve zariftir ve bu eşleşmenin ağırlığın yarısından daha fazlasına sahip olmadığına ikna etmek çok az zaman alır optimum bir tur.


Gerçekten de, uygun yaklaşım garantileri olan çok sayıda başka basit ve şık yaklaşım algoritması da vardır.
Janne H. Korhonen



25

Doğrusal programlama için algoritmalar : Simpleks, elipsoid ve iç nokta yöntemleri.

http://en.wikipedia.org/wiki/Linear_programming#Algorithms


Gerçekten de, bu sorunlara ilişkin anlayışımızı geliştirmek için çeşitli Nobel ödülleri verildi.
Ross Snider,

@Ross Kantorovich, LP'yi icat etmek ve kaynak tahsislerine uygulamak için Ekonomi dalında Nobel ödülünü kazandı. Başka hangi ödülleri düşünüyordun?
Mark Reitblatt

@Mark Koopermans, Kantorovich ile nobel ödülü aldı, ancak hala "birkaç" demem yanlış oldu.
Ross Snider,

22

Belirli bir SAT örneği sınıfını çözmek için Robin Moser algoritması. Bu tür örnekler Lovasz Local Lemma tarafından çözülebilir. Moser algoritması gerçekten de lemma ifadesinin rastgele bir şekilde dağıtılmasıdır.

Bence bu, algoritmasının (ve doğruluk ispatının tekniği) yıllarca iyi sindirileceğini ve Kitaptan bir Algoritma için uygun bir aday olma noktasına getirileceğini düşünüyorum .

Bu sürüm , Gábor Tardos ile yazılmış orijinal makalesinin bir uzantısıdır.


21

Marcus Hutter'ın Tüm Tanımlı Problemler İçin En Hızlı ve En Kısa Algoritma .

Bu tür listedeki diğer tekliflerin ruhuna aykırıdır, çünkü sadece teorik ve pratik çıkarları yoktur, ancak daha sonra yine başlık türünü söyler. Belki de sadece bir algoritmanın asimptotik davranışına bakacak olanlar için uyarıcı bir hikaye olarak dahil edilmelidir.


21

Knuth'un Algoritması X , tam kapak problemine yönelik tüm çözümleri bulur . Bu kadar büyülü olan, etkili bir şekilde uygulamak için önerdiği tekniktir: Dancing Links .


20

Bence en düşük ortak ata sorgularını sabit bir zamanda cevaplayan , ormanı lineer zamanda ön işleme tabi tutan Schieber-Vishkin 'in dahil edilmesi gerektiğini düşünüyorum .

Ben Cilt 4 Fascicle 1'de Knuth'un fuar ve ister onun musing . Tam olarak anlaması iki gün sürdü, sözlerini hatırlıyorum:

Bence çok güzel ama şaşırtıcı bir şekilde literatürde kötü bir baskı var (..) Beni heyecanlandıran matematiğe dayanıyor.


10
Bekle, çok güzel olabilir, ama tam olarak anlaması iki gün Knuth aldıysa, gerçekten "kitaptan" mı?
ShreevatsaR

@ShreevatsaR Kitabın dipnotlarında güzel baskılar var :)
hsmyers
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.