12 Mayıs 2015 Salı

Algoritmanın Tarihçesi

Algoritmanın Tarihçesi 


Algoritma sözcüğü, Özbekistan'ın Harezm, bugünkü Türkmenistan'ın Khiva kentinde doğmuş olan Ebu Abdullah Muhammed İbn Musa el Harezmi adındaki İran'lı alimden kaynaklanır. Bu alim 9. yüzyılda cebir alanındaki algoritmik çalışmalarını kitaba dökerek matematiğe çok büyük bir katkı sağlamıştır. "Hisab el-cebir ve el-mukabala" kitabı dünyanın ilk cebir kitabı ve aynı zamanda ilk algoritma koleksiyonunu oluşturur. Latince çevirisi Avrupa'da çok ilgi görür. Alimin ismini telaffuz edemeyen Avrupalılar "algorizm" sözcüğünü "Arap sayıları kullanarak aritmetik problemler çözme kuralları" manasında kullanırlar. Bu sözcük daha sonra "algoritma"ya dönüşür ve genel kapsamda kullanılır.
Faaliyetlerin birçoğu algoritmanın tanımının geliştirilmesine yönlendirilmiştir ve aktifliği çevredeki sorunlar nedeniyle, özellikle matematiğin temelleri(özellikle Church-Turing tezi) ve akıl felsefesi(özellikle yapay zeka konusundaki tartışmalar) sebebiyle devam etmiştir.


Algoritmanın Kronolojik Sırası : 
Yaklaşık M.Ö. 1600 – Babilliler bilinen ilk çarpanlara ayırma ve kök bulma algoritmasını geliştirdiler.

Yaklaşık M.Ö. 300 – Öklid algoritması


Yaklaşık M.Ö. 200 – Eratosthenes Elemesi


263 – Gaussal eleme, Liu Hui tarafından tanımlandı.


813 ve 833 yılları arasında Harezmi doğrusal ve ikinci dereceden denklemleri çözmek için bir algoritma geliştirdi. Algoritma ismi bu kişinin adından türetilmiştir


1614 – John Napier logaritmayi kullanan hesaplamaları yapmak için bir metod geliştirdi


1671 – Newton-Raphson metodu, Isaac Newton tarafindan geliştirildi.


1690 – Newton-Raphson methodu bağımsız olarak Joseph Raphson tarafından da bulundu


1805 – Cooley-Tukey algoritmasi Carl Friedrich Gauss tarafından biliniyordu


1926 – Boruvka algoritması


1934 – Delaunay üçgen bölümlemesi Boris Delaunay tarafından geliştirildi

1940′lar
1945 – Birleştirmeli sıralama John von Neumann tarafından geliştirildi

1947 – (Simplex algoritması) basit/tekyönlü algoritma George Dantzig tarafından geliştirildi.

1950′ler
1952 – Huffman kodlaması David A. Huffman tarafından geliştirildi

1954 – Radix sıralaması bilgisayar algoritması Harold H. Seward tarafından geliştirildi.


1956 – Kruskal algoritm
ası Joseph Kruskal tarafından geliştirildi.

1957 – Prim algoritması Robert Prim tarafından geliştirildi.

1957 – Bellman-Ford algoritması R. Bellman ve L. R. Ford tarafından geliştirildi.


1959 – Dijkstra algoritması Edsger Dijkstra tarafından geliştirildi.


1959 – Shell sıralaması D. L. Shell tarafından geliştirildi.


1959 – De Casteljau algoritması Paul de Casteljau tarafından geliştirildi.

1960′lar
1960 – Hızlı Sıralama C. A. R. Hoare tarafından geliştirildi.

1962 – Ford-Fulkerson algoritması L. R. Ford ve D. R. Fulkerson tarafından geliştirildi.


1962 – Bresenham doğru algoritması Jack E. Bresenham tarafından geliştirildi.


1964 – Öbek-sıralama J. W. J. Williams tarafından geliştirildi.


1965 – Cooley-Tukey algoritması James Cooley ve John Tukey tarafından yeniden bulundu.


1965 – Levenshtein aralığı ) Vladimir Levenshtein tarafından geliştirildi.


1965 – Cocke-Younger-Kasami (CYK) algoritması bağımsız olarak T. Kasami tarafından geliştirildi.


1967 – Viterbi algoritması Andrew Viterbi tarafından önerildi.


1967 – Cocke-Younger-Kasami (CYK) algoritması bağımsız olarak D. H. Younger tarafından geliştirildi.


1968 – A* grafik arama algoritması Peter Hart, Nils Nilsson ve Bertram Raphael tarafından geliştirildi.

1970′ler
1970 – Knuth-Bendix completion algoritması Donald Knuth ve P. B. Bendix tarafından geliştirildi.

1972 – Graham taraması Ronald Graham tarafından geliştirildi.


1973 – RSA şifreleme algoritması Clifford Cocks tarafından geliştirildi.


1973 – Jarvis march algoritması R. A. Jarvis tarafından geliştirildi.


1974 – Pollard’ın p-1 algoritması John Pollard tarafından geliştirildi.


1975 – Genetik algoritma John Holland tarafından popülerleştirildi.


1975 – Pollard’ın ro algoritması John Pollard tarafından geliştirildi.


1975 – Aho-Corasick algoritması Alfred V. Aho ve Margaret J. Corasick tarafından geliştirildi.


1976 – Sala
min-Brent algoritması bağımsız olarak Eugene Salamin ve Richard Brent tarafından geliştirildi.

1976 – Knuth-Morris-Pratt algoritması Donald Knuth ve Vaughan Pratt ve bağımsız olarak J. H. Morris tarafından geliştirildi.

1977 – Boyer-Moore string (karakter öbeği) arama algoritması bir harf öbeğinin başka bir harf öbeği içerisinde bulunup bulunmadığını arayan algoritma geliştirildi.


1977 – RSA şifreleme algoritması Ron Rivest, Adi Shamir ve Len Adleman tarafından yeniden bulundu.


1977 – LZ77 algoritması Abraham
Lempel ve Jacob Ziv tarafından geliştirildi.

1978 – LZ78 algoritması LZ77 algoritmasından Abraham Lempel ve Jacob Ziv tarafından geliştirildi.

1978 – Bruun’un algoritması ikinin katları için G. Bruun tarafından önerildi.


1979 – Khachiyan’ın ellipsoit metodu Leonid Khachiyan tarafından geliştirildi.

1980′ler
1981 – İkinci dereceden eleme metodu Carl Pomerance tarafından geliştirildi.

1983 – Simule edilmiş tavlama metodu (Simulated annealing) S. Kirkpatrick, C. D. Gelatt ve M. P. Vecchi tarafından geliştirildi.


1984 – LZW algoritması LZ78′den Terry Welch tarafından geliştirildi.


1984 – Karmarkar’ın iç nokta algoritması Narendra Karmarkar tarafından geliştirildi.


1985 – Simule edilmiş tavlama metodu (Simulated annealing) bağımsız olarak V. Cerny tarafından geliştirildi.


1986 – Blum Blum Shub L. Blum, M. Blum, ve M. Shub önerildi.


1988 – Özel sayı alanı elemesi John Pollard tarafından geliştirildi.

1990′lar
1990 – Genel sayı alanı elesi Özel sayı alanı elesi yönteminden Carl Pomerance, Joe Buhler, Hendrik Lenstra, ve Leonard Adleman tarafından geliştirildi.

1991 – Beklemesiz senkronizasyon Maurice Herlihy tarafından geliştirildi.


1992 – Deutsch-Jozsa algoritması D. Deutsch ve R. Jozsa tarafından önerildi.


1994 – Shor’un algoritması Peter Shor tarafından geliştirildi.


1994 – Burrows-Wheeler dönüşümü Michael Burrows ve David Wheeler tarafından geliştirildi.


1996 – Grover’ın algoritması Lov K. Grover tarafından geliştirildi.


1996 – RIPEMD-160 Hans Dobbertin, Antoon Bosselaers, ve Bart Preneel tarafından geliştirildi.


1998 – Rsync algoritması Andrew Tridgell tarafından geliştirildi.


1999 – Yarrow algoritması Bruce Schneier, John Kelsey, ve Niels Ferguson tarafından tasarlandı.

2000′ler
2001 – LZMA sıkıştırma algoritması.

2002 – AKS öncelik testi primality test Manindra Agrawal, Neeraj Kayal ve Nitin Saxena tarafından geliştirildi.
Algoritmanın Tanımı : 
Algoritmaları daha kolay anlatabilmek için akış şemaları kullanılır.


Belli bir durumdan başlayarak sonlu sayıda adımda belli bir sonucu elde etmenin yöntemini tarif eden iyi tanımlanmış (well-defined) kurallar kümesine algoritma denir. Dolayısıyla algoritma, bir sonucun bulunmasını kolaylaştıran ama deneme-yanılma ve sezgisel çözümlemeye karşıt olan bir yöntemdir. Algoritmalar özel durumlara çözüm sunmazlar.

Genel çözümlerin işlem basamaklarını içerirler. Bir algoritmanın çalışmasındaki mutlak zorunluluk; her türl belirsizlikten arınmış olmasıdır. Bir algoritmanın yürütülmesi, her biri bir komutla belirlenen bir etiketler dizisi oluşturur ve bu dizi, önceki komutun yürütülmesinin sona ermesiyle birlikte yürütülmeye başlar. Algoritmanın temel yapısı olan, zaman içindeki bu sıralılık, süreçli programlamada temel bir varsayımdır.


Genel olarak algoritmanın aşağıdaki özellikleri ele alınmaktadır: 
  •  Genellik
  •  Kesin sıralılık
  •  Sırayı belirleyen kumanda yapısı
  •  Sonluluk ve nicelik





Hiç yorum yok:

Yorum Gönder