En sık hangi algoritmalar kullanılır?
Lütfen cevap başına tek bir algoritma yazın, yanıtınızı kısa tutmaya çalışın (bir veya iki satır).
En sık hangi algoritmalar kullanılır?
Lütfen cevap başına tek bir algoritma yazın, yanıtınızı kısa tutmaya çalışın (bir veya iki satır).
Yanıtlar:
Hızlı Fourier Dönüşümü algoritmik problemi gerçek bilgisayar sistemleri tarafından günde en çok çözüldü mü? Yakın olmalı. Bu yüzden Cooley-Tukey FFT algoritmasını aday gösterirdim .
Çarpma işlemi.
Belki de en önemsiz olmayan en eski algoritmalardan biri ve FFT'den daha sık çözülen bir problem.
Dijkstra ve Bellman-Ford en kısa yol algoritmaları. İnternet'te 2010 itibariyle en az 35.000 Otonom Sistem (AS) vardır. Her AS, bir bağlantı durumu yönlendirme protokolü (Dijkstra) veya bir mesafe vektör yönlendirme protokolü (Bellman-Ford) çalıştırmaktadır. Bir AS içindeki yönlendiriciler tipik olarak tablolarını birkaç dakikada bir periyodik olarak günceller, örneğin 10.
Böylece, günlük Dijkstra ve Bellman-Ford infazlarının sayısı en az 5 milyon. Ve bu sadece yönlendiricilerden.
Google Haritalar ve benzerlerinden en kısa yol hesaplamalarını 10 kat daha fazla hesaplaması gerekmedi. Günde yarım milyar infaz çok zor değil.
Ben en çok kullanılan algoritma Parity Check (veya belki CRC veya bir tür hata düzeltme kodu) olduğunu düşünüyorum, çünkü her RAM erişiminde görünürler.
Simplex Algoritma - bu hala en iyi iç nokta yöntemleri ile rekabet halinde değil mi? Eğer öyleyse çok kullanılmalıdır.
Daha genel olarak, Kanellakis ödül kazananlarına teorik ve pratik eğimi olan fikirler için bakmalısınız .
Derinlik İlk Arama (DFS)
Modern TCP uygulamalarındakinden daha yaygın olarak kullanılan algoritmaları düşünmek zordur : yani tıkanıklıktan kaçınma , hızlı yeniden iletim . Bu, bir algoritmanın ölçütlerini neyin karşıladığını nasıl belirlediğine bağlı olsa da ...
Gauss Yok Etme Bu hala pratikte kullanılıyor değil mi? Değilse, lineer sistemleri çözmek için en sık kullanılanla değiştirilmez ...
SHA-1 (ve genel olarak hash fonksiyonları). Muhtemelen diğer algoritmaların çoğunu yürütme sayısı açısından yendi.
Bu yanıt "en sık" ı gerçek CPU çevrimleri açısından yorumlar.
70'lerde bilgisayar öğrenmeyi öğrenirken, bilgisayar (read: mainframe) döngülerinin büyük çoğunluğunun sıralamaya adanmış olduğunu hatırlıyorum. İş uygulamaları analiz ve raporlama için kapsamlı sıralama gerektirir. Bunun çok fazla değiştiğini düşünmüyorum, ama elbette diğer uygulamaların - e-posta, kelime işleme, vb. - yükselişi karışımı değiştirmiş olmalı. Bu türler genellikle alt türler oluşturmak için alanların art arda sıralanması gerektiğinden istikrarlı türlerdir (Quicksort değil).
Kesin olarak, en sık kullanılan algoritma, şüphesiz, başka bir şey olmadığı zaman Windows sistem bekleme süreci tarafından yürütülen şeydir ;-).
Sprase Matrix Vector Çarpın
... hemen hemen tüm lineer sistemlerin çözümünün ardındaki hesaplama işgücüdür. Sonuç olarak,
Herhangi bir süper bilgisayar veya kümedeki FLOP'ların çoğu seyrek bir mat-vec içinde harcanır.
Hashing ve kırmızı-siyah ağaçlar.
Zaten STL'de (hash_map, harita) uygulanmışlar ve her programcı, rasgele bir veri türüyle dizinlenmiş bazı bilgileri saklamak istediğinizde böyle bir kabın inanılmaz derecede kullanışlı olduğunu biliyor.
Reed-Solomon gibi hata düzeltme algoritmaları.
http://en.wikipedia.org/wiki/Error-correcting_code#List_of_error-correcting_codes http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
Bence DP şimdiye kadar ankette belirtilen diğer algoritmalardan "daha sık" kullanılıyor. Önemsiz bir algoritma kavramının, çağrılan bir algoritmanın belirli bir uygulamasının kaç kez yerine, gerçek hayatta programcı tarafından ne sıklıkta uygulandığı anlamında "daha sık" çıkarıyorum.
DP çok yönlüdür ve birçok yüzü vardır. Bazen onu bilinçaltında kullandım ve daha sonra DP yaptığımı fark ettim.
Tabii ki, Dinamik Programdan daha yaygın olan şeyler vardır, ancak bunlar çoğunlukla veri yapısıdır (dizi, bağlantılı liste, karma).
String Matching, uygulama yazılımında ve veritabanı düzeyinde her zaman kullanılır.
Tam olarak, bazı alt doğrusal beklenen çalışma zamanına ulaşan birkaç oldukça ilgili algoritma (KMP, Boyer-Moore) vardır. Aynı zamanda bir CS bakış açısından çalışmak ilginçtir.
Yaklaşık dize eşleşmesi, yani hizalamalar, muhtemelen daha da ilginçtir. "Otomatik düzeltme" özelliklerini biliyor musunuz? Ayrıca, gürültülü dizi verilerinde (örneğin DNA) yapılan aramalar hizalamalar kullanılarak yapılır.