Arama

Algoritma

Güncelleme: 22 Mart 2017 Gösterim: 10.884 Cevap: 4
ThinkerBeLL - avatarı
ThinkerBeLL
VIP VIP Üye
3 Mart 2010       Mesaj #1
ThinkerBeLL - avatarı
VIP VIP Üye
Algoritma
Vikipedi, özgür ansiklopedi
Sponsorlu Bağlantılar

Ebu Abdullah Muhammed İbn Musa el Harezmi isimli Algoritma, matematikte ve bilgisayar biliminde bir işi yapmak için tanımlanan, bir başlangıç durumundan başladığında, açıkça belirlenmiş bir son durumunda sonlanan, sonlu işlemler (adımlar) kümesidir. Algoritmalar bilgisayarlar tarafından işletilebilirler. Algoritma kelimesi, İranlı matematikçinin adından gelir. Batılılar, el Harezmi (Al-Khwārizmī, Latincede Algoritmi) sözcüğünü telafuz edemedikleri için terim bu şekilde kalmıştır.

Tanımı
Algoritmaları daha kolay anlatabilmek için akış şemaları kullanılır.
Ad:  326px-LampFlowchart_tr.svg.png
Gösterim: 3157
Boyut:  22.0 KB

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 neticelik
Algoritmanın en basit örneği bir yemek tarifidir; ayran yapmak için:
  • Yoğurdu bir kaba koy.
  • Karıştır.
  • Aynı miktarda su ilave et.
  • Biraz tuz ekle.
  • Tekrar karıştır.
Sonucu bir matematik problemin çözümü olan başka bir basit örnek de Öklid'in ortak bölenlerin en büyüğünü bulan algoritmasıdır.
Kod:
 giriş: iki sayı m,n
 1. eğer n = 0 ise, sonuç m dir
 2. m'nin yerine n koy, n nin yerine m%n koy, tekrar 1'den başla.

Bu örnekte m % n bölmenin kalanıdır, yani 5%2 = 1'deki gibi. Algoritmayı 33 ve 15'e uygulayalım:
Kod:
33,15
15,3
3,0
sonuç 3

Bir de bilgisayar algoritmasına örnek verelim. Kullanıcının girdiği dört sayının ortalamasını görüntüleyen algoritmayı yazalım:

Kod:
A0 --> Başla
A1 --> Sayaç=0 (Sayaç'ın ilk sayısı 0 olarak başlar.)
A2 --> Sayı=? : TßT+Sayı (Sayıyı giriniz. T'ye sayıyı ekle ve T'yi göster.)
A3 --> Sayaç= Sayaç+1 (Sayaç'a bir ekle ve sayaci göster.)
A4 --> Sayaç < 4 ise A2'ye git. (Eğer sayaç 4'ten küçükse Adım 2'ye git.)
A5 --> O=T/4 (Ortalama için T değerini 4'e böl.)
A6 --> O'yu göster. (Ortalamayı göster.)
A7 --> Dur


Tarihi

Algoritma sözcüğü Ebu Abdullah Muhammed İbn Musa el Harezmi adındaki İran'lı alimden kaynaklanır. Bu alim 9. yüzyılda cebir alanindaki 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.


Önemli algoritma türleri

  • Arama algoritmaları
  • Bellek yönetimi algoritmaları
  • Bilgisayar grafiği algoritmaları
  • Birleşimsel algoritmalar
  • Çizge algoritmaları
  • Evrimsel algoritmalar
  • Genetik algoritmalar
  • Kripto algoritmaları veya kriptografik algoritmalar
  • Kök bulma algoritmaları
  • Optimizasyon algoritmaları
  • Sıralama algoritmaları
  • Veri sıkıştırma algoritmaları

BEĞEN Paylaş Paylaş
Bu mesajı 1 üye beğendi.
Tanrı varsa eğer, ruhumu kutsasın... Ruhum varsa eğer!
ThinkerBeLL - avatarı
ThinkerBeLL
VIP VIP Üye
3 Mart 2010       Mesaj #2
ThinkerBeLL - avatarı
VIP VIP Üye
Algoritmaların Tarihsel Sıralaması
Vikipedi, özgür ansiklopedi
Sponsorlu Bağlantılar

Aşağıdaki tarihsel sıralama genel olarak algoritmaların ilk kökenlerinden başlayarak gelişimlerini ana hatlarıyla gösterir.

1940 Öncesi
  • Yaklaşık MÖ 1600 - Babilliler bilinen ilk çarpanlara ayırma ve kök bulma algoritmasını geliştirdiler.
  • Yaklaşık 300 - Öklid algoritması
  • Yaklaşık 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 algoritması 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 - Salamin-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.

BEĞEN Paylaş Paylaş
Bu mesajı 1 üye beğendi.
Tanrı varsa eğer, ruhumu kutsasın... Ruhum varsa eğer!
Daisy-BT - avatarı
Daisy-BT
Ziyaretçi
23 Nisan 2011       Mesaj #3
Daisy-BT - avatarı
Ziyaretçi

Algoritma

Her tür sistematik hesap yöntemi ya da doğru sırayla sayıldıklarında karmaşık matematiksel işlemler oluşturan basit matematik işlemler dizisi.

"Kitabü'l-Muhtasar fi Hisabü'l-Cebr ve'l-Mukabele" adlı yapıtın yazarı Musa-el Harizmi'nin, Avrupalıların "Alkhorismi" biçiminde söyledikleri adından gelmektedir. Çok çeşitli algoritmalar vardır. Örneğin, iki sayının en büyük ortak bölenini bulma "Öklid Algoritması" diye bilinir. Bilgisayar alanında algoritmalardan çokça yararlanılır.

Morpa Genel Kültür Ansiklopedisi & MsXLabs

BEĞEN Paylaş Paylaş
Bu mesajı 1 üye beğendi.
aybk2003 - avatarı
aybk2003
Ziyaretçi
9 Nisan 2014       Mesaj #4
aybk2003 - avatarı
Ziyaretçi
Algoritma, matematikte ve bilgisayar biliminde bir işi yapmak için tanımlanan, bir başlangıç durumundan başladığında, açıkça belirlenmiş bir son durumunda sonlanan, sonlu işlemler kümesidir. Yani belli bir problemi çözmek veya belirli bir amaca ulaşmak için çizilen yola algoritma denir. Genellikle programlamada kullanılır ve tüm programlama dillerinin temeli algoritmaya dayanır. Aynı zamanda algoritma tek bir problemi çözecek davranışın, temel işleri yapan komutların veya deyimlerin adım adım ortaya konulmasıdır ve bu adımların sıralamasına dikkat edilmelidir. Bir problem çözülürken algoritmik ve sezgisel (herustic) olmak üzere iki yaklaşım vardır. algoritmik yaklaşımda da çözüm için olası yöntemlerden en uygun olan seçilir ve yapılması gerekenler adım adım ortaya konulur. Algoritmayı belirtmek için ; metinsel olarak düz ifade ve akış diyagramı olmak üzere 2 yöntem kullanılır. Algoritmalar bilgisayarlar tarafından işletilebilirler. Algoritma kelimesi, Özbekistan'ın Harezm, bugünkü Türkmenistan'ın Khiva kentinde doğmuştur.

Bilgisayar algoritmasına örnek verelim. Kullanıcının girdiği dört sayının ortalamasını görüntüleyen algoritmayı yazalım:

A0 --> Başla
A1 --> Sayaç=0 (Sayaç'ın ilk sayısı 0 olarak başlar.)
A2 --> Sayı=? : T=T+Sayı (Sayıyı giriniz. T'ye sayıyı ekle ve T'yi göster.)
A3 --> Sayaç=Sayaç+1 (Sayaç'a 1 ekle ve sayacı göster.)
A4 --> Sayaç<4 ise A2'ye git. (Eğer sayaç 4'ten küçükse Adım 2'ye git.)
A5 --> O=T/4 (Ortalama için T değerini 4'e böl)
A6 --> O'yu göster. (Ortalamayı göster.)
A7 --> Dur
Sweet
Avatarı yok
nötrino
Yasaklı
22 Mart 2017       Mesaj #5
Avatarı yok
Yasaklı

Bilgisayarların Tamamen Rastgele Sayılar Üretmesini Sağlamak için Yeni Bir Algoritma Geliştirildi!


1 ve 6 arasında rastgele bir rakam elde etmek, bir zar atmak kadar kolaydır, fakat bilgisayarlar, gerçekten rastgele bir sayı üretmeyi çok zor bulurlar; onlar, matematik ve mantık temeline dayanırlar ve rastgelelik izlenimi üretmek için çok sık olarak karmaşık denklemler kullanırlar. Fakat araştırmacılar şimdi, bilgisayarlar tarafından üretilen rastgele rakamları gerçekten rastgele hale getirmeye yardımcı olacağını umdukları yeni bir algoritma geliştirdiler; bu durum, telefonlarımızı ve diğer cihazlarımızı koruyan dijital güvenlikte önemli bir etmen.

Araştırmacılardan biri olan Polonya’daki Gdansk Üniversitesi’nden Marcin Pawlowski, şöyle bir açıklamada bulunuyor: “Bütün elektronik cihazlar, pek çok rastgeleliğe ihtiyaç duyar. Rastgelelik, güvenliğe ihtiyacınız olduğu zaman gereklidir. Güvenli iletişim istediğiniz zaman, şifre çözme bilimine ait bir anahtar üretilmelidir. Bunun rastgele üretilmesi lazımdır, böylece hiçbir düşman onu kolayca tahmin edemez.”

Bu yüzden eğer rakamlarınız gerçekten rastgele değilse, birisi kalıbı çözebilir ve veri şifrelemeye çalıştığınız zaman bu bir sorundur.Gerçek bir rastgele sayı üretmek için, bir parça yazılımın bir tür tahmin edilemez fiziksel girişi bir “tohum” olarak kullanması lazımdır; bu, bir klavyede yazma kalıbından bir atomun bölünmesine kadar herhangi bir şey olabilir.Pawlowski ve Polonya, İsveç ile Brezilya’daki iş arkadaşları tarafından geliştirilen yeni algoritma, bu fiziksel giriş türüne odaklanıyor ve bunu ölçmek için kullanılan cihazlardan herhangi tahmin edilebilir bir kalıp türünü yok etmeye çalışıyor. Basitçe söylemek gerekirse, ilgili rakam çıkmazı konusunda karmaşıklık ile hız arasında bir denge oluşturmaya çalışıyor.

Takımın yaptığı denemeye bağlı olarak tasarlanan yaklaşım, daha önce hiç olmadığı kadar yüksek bir rastgelelik seviyesini ve ayrıca daha yüksek bir hızı garantileyebiliyor. Dahası, diğer yöntemlerin hiç çalışmadığı durumlarda çalışıyor.Yeni algoritmanın üstesinden geldiği temel hile, mevcut olan hesaplama gücü ile rakamların rastgeleliğini doğrulamak için kullanılan testlerin sıkılığı arasında bir değiş tokuş belirleme becerisi. Bu kulağa çok şeymiş gibi gelmeyebilir, fakat gerçekten rastgele olan, daha fazla rastgele rakam ve cihazlarımız için daha iyi güvenlik anlamına geliyor.

Pawlowski ise şöyle diyor: “Şimdi bu yapının birçok senaryoda çalıştığını kanıtlamaya ve hangi durumlarda en faydalı olduğunu görmeye çalışıyoruz. İkinci hedefimiz, daha fazla rastgeleliği garantilemek için gereken hesaplama süresini azaltmaya çalışmak. Bunun yapılabileceğini öne süren bazı ön sonuçlarımız da var.”

Kaynak: New Journal of Physics

Benzer Konular

31 Ocak 2011 / Zampal Soru-Cevap
14 Ocak 2012 / Misafir Soru-Cevap
22 Temmuz 2012 / Pissagor Taslak Konular
24 Ocak 2011 / Misafir Taslak Konular