Algoritma ve HAREZMİ

out of whack

© ◄ Ayarsız..! ►
Forum Administrator
Algoritma ve HAREZMİ

5.jpg


Türkçede; “Her yiğidin bir yoğurt yiyişi vardır.” sözüyle insanların meseleleri ele alıştaki farklılığı vurgulanır. “Akıl akıldan üstündür.” sözü ise, insanları başkalarının fikirlerine açık olmaya davet eder. Cenâb-ı Hak, insanları farklı mizaç ve kabiliyetlerde yaratmıştır. Bunun hikmetlerinden biri, insanların meselelere farklı açılardan bakabilmelerini ve problemlere değişik çözümler üretebilmelerini sağlamaktır. Bu hikmete uygun davranmak, fikrî zenginlik ve insanlar arasında yardımlaşmayı sağlar; birçok kolaylığı beraberinde getirir.

Birçok sahada olduğu gibi algoritma sahasında da ilk araştırmalar Müslüman âlimler tarafından yapılmıştır. Algoritma kavramı ilk defa, 780–850 yılları arasında Bağdat’ta yaşamış, matematik, astronomi ve coğrafya alanlarında mühim çalışmalara imza atmış, dünyaca ünlü Müslüman âlim Harezmî tarafından kullanılmıştır. Harezmî’nin “Hisabü’l-Cebr ve’l-Mukabele” isimli eseri, aynı zamanda ilk algoritma koleksiyonunu oluşturur. Eserin Lâtince tercümesi Avrupa’da da büyük dikkat çekmiştir. Avrupalılar, ‘algorizma’yı ‘Arapça sayıları kullanarak aritmetik problemleri çözme kuralları’ mânâsında kullanmışlar, terim daha sonra ‘algoritma’ya dönüşmüştür.
Başlangıçta matematiğin bir dalı olarak gelişen algoritma, ‘belli bir problemi çözmek veya bir fiili gerçekleştirmek için takip edilen yol, işlemler dizisi, basamaklar kümesi’ veya ‘insanların problemlere getirdikleri değişik çözüm metotları’ olarak tarif edilir. Sonlu sayıdaki bu işlemler, adımlar veya basamaklar bir noktada başlar ve tarif edilmiş bir netice durumunda sonlanır. Günümüzde algoritma dendiğinde ise, daha çok bilgisayar programlarında kullanılan, sıralama, arama vb. işlemlerde takip edilen yollar akla gelmektedir. Bilgisayarların her alanda problem çözmede kullanılmasına paralel olarak, algoritmalar oldukça yaygınlaşmıştır. Günümüzde fizik, kimya, biyoloji, müzik dâhil birçok sahada algoritmalar kullanılmaktadır.

Aynı problemi çözmeye odaklı farklı algoritmalar, çözüme farklı yollardan ulaşmayı mümkün kılar. Meselâ, verilen sayıları küçükten büyüğe veya büyükten küçüğe sıralamak için geliştirilen çok sayıda sıralama algoritmaları vardır: seçerek sıralama (selection sort), birleştirerek sıralama (merge sort), ve çabuk sıralama (quick sort). Bir sayının sıralanmış bir dizide bulunup bulunmadığını araştıran arama (search) algoritmaları için de aynı durum söz konusudur. Benzer şekilde, farklı kabiliyetlerle donatılmış insanların aynı problemi farklı algoritmalarla veya yaklaşımlarla çözmeye çalışması, daha doğruyu, iyiyi ve güzeli bulmaya hizmet eder. Bu yüzden bir fikri inceleyip anlamadan reddetmemek, farklı fikirlerin öne sürülmesini teşvik etmek, daha uygun fikir ve çözümlerden faydalanmaya çalışmak her zaman önemlidir. Farklılıkların zenginliğe dönüştürülmesinde, diyalog kurma ve karşılıklı saygı duyma ise, olmazsa olmaz ahlâkî bir fazilettir.

Bilgisayar algoritmaları, sadece tarif edilmiş işaretlerden anlayan bilgisayarlara belirli bir problemin nasıl çözüleceğini gösterir. Bu bakımdan, bilgisayarların kendiliğinden hiçbir işlem yapamayacağını, sadece insanların programladığı fonksiyonları yerine getirebileceğini unutmamak gerekir. Son yıllarda bilgisayar bilimlerinde, özellikle sun’î zekâ gibi sahalarda kaydedilen ilmî gelişmelere paralel olarak bazı araştırmacılar, bilgisayarlara âdeta insan rolü biçmeye kalkıp, insanın benzerinin yapılabileceği gibi akıldan uzak fikirleri dile getirseler de, bunun gerçekleşmesi mümkün görünmemektedir.

Gerek bilgisayar alanında gerekse günlük hayatta problem çözerken sistematik bir yol takip edilmesi, karşılaşılan problemleri çözmede başarı nispetini büyük ölçüde artırmaktadır. Problem çözmede en önemli aşama, problemin doğru bir şekilde teşhis ve tarif edilmesidir. Daha sonra, problemi çözen algoritmalar geliştirilir. Bu algoritmalardan çözüme ulaştırmada en tutarlı ve uygun olanı tercih edilir.

Tasarlandıktan sonra akış şemasıyla resmedilen algoritmanın bilgisayarın anlayacağı bir dile çevrilmiş hâli olan bilgisayar programı da bilgisayar ortamında çalıştırılarak uygun verilerle test edilir. Bu testle algoritmanın doğru bir şekilde çalıştığından emin olunduktan sonra program gerçek işlemlerde kullanılarak muhtemel olumsuzlukların önüne geçilmiş olur.

İnsanoğlu kendisine verilen, başta akıl olmak üzere bütün kabiliyetlerini kullanarak her zaman daha doğruyu ve iyiyi bulabilir. Özellikle ilmî çalışmalarda elde edilen ilerlemelerin dâima bir sonraki adımının olabileceği düşüncesiyle araştırmalar yapılır. Çünkü insanlık tarihindeki tecrübe birikimi göstermiştir ki, bugün geliştirilen bir metot zaman içinde yetersiz kalabilmektedir.

Aynı problemi çözen farklı birçok algoritma analiz edilirken, bunların maliyetlerine bakılır ve maliyeti en düşük ve uygulanabilir olan algoritma tercih edilir. Algoritmanın maliyeti problemi çözmek için gerçekleştirilen işlem sayısına göre belirlenir. Aynı problemi daha çok işlem yaparak çözen algoritma daha düşük bir performansa sahiptir.

Araya koyarak sıralama algoritması
Sıralama algoritmaları bilgisayar alanında en ilgi çekici olanlardır. Verilerin sıralı hâlde oluşu, bunların işlenişini ve kullanılmasını kolaylaştırıp işlem yapma hızını artırdığından, veriler genellikle önce bir sıralama algoritmasıyla sıralanır.

Araya koyarak sıralama türünde, sıralanacak dizinin ikinci teriminden başlanarak, bütün terimleri kendinden önceki bütün terimlerle karşılaştırır. Karşılaştırma yapılırken eğer eldeki sayı karşılaştırıldığı sayıdan küçükse, büyük olan sayı bir kaydırılır. Genel olarak her terim kendinden önceki bütün terimlerle karşılaştırıldığından n terimli bir dizide bu sıralama n x n kadar karşılaştırma yapılarak gerçekleştirilebilir. Bu sıralama algoritmasının maliyeti algoritma literatüründe O(n2) olarak gösterilir. Bu sıralamayı n karşılaştırma ile gerçekleştirebilen (O(n) maliyetli sıralama) algoritmalar da mevcuttur.

En kısa yolu bulma algoritması
Bu algoritma, iki nokta arasındaki en kısa yolu bulmak için kullanılır. Elimizde bazıları birbirleriyle bağlantılı sınırlı sayıda noktalar olduğunu düşünelim. Bu hesaplama esnasında, sistematik olarak, verilen noktalar arasında kurulabilecek bütün bağlantı kombinasyonları kontrol edilerek en kısa yol bulunur. Bu algoritmanın kullanımına misâl olarak, Amerika gibi bütün yollarının kayıtlarını en ince ayrıntılarıyla sanal ortama aktarmış ülkelerde, bir yerden bir yere seyahat edenlere sürüş doğrultusu belirleme hizmeti sağlayan siteleri verebiliriz. Kullanıcının verdiği iki adres arasındaki muhtemel bütün ulaşım güzergâhları göz önünde bulundurularak, belli kriterlere göre yol adlarıyla en uygun güzergâh tavsiye edilir. Bu algoritma, ülkemizde de, bazı belediyeler tarafından kayıtlı otobüs seferleri esas alınarak belli iki semt arasında seyahat etmek için hangi otobüs hattının veya hatlarının tercih edileceğini araştıran yolcuları bilgilendirmede kullanılmaktadır.

Tıpta algoritma kullanılması
Bir hastalığın teşhis veya tedavisinde kullanılan, herhangi bir araştırma veya arama tablosu tıbbî algoritma olarak tarif edilir. Hastalıkları bunlarla teşhis, tedavi ve takip ederken karar ağacı mantığı kullanılır. “Eğer hastada A, B, C belirtileri varsa, D hastalığı olması muhtemeldir ve E tedavisini kullan!” gibi yol gösterici algoritmalar tıpta yaygın olarak kullanılmaktadır. Bunların gâyesi, sunulan sağlık hizmetlerini standartlaştırmak ve böylece ortaya çıkabilecek potansiyel belirsizlik ve hataları azaltmaktır. Ayrıca bu algoritmalar, hastaya yaklaşım, teşhis ve tedavide yol gösterici olarak problemin daha kolay çözümü için eğitim aşamasında da kullanılır. Yayımlanmış birçok tıbbî bilgi, basit hesaplamalar yapandan karmaşık kararlar alabilenlere kadar çeşitlilik arz eden değişik algoritmalar hâline dönüştürülmüştür. Meselâ, vücut kitle indeksi (VKİ) ölçümü için geliştirilmiş bir algoritmada, gönüllü kişiye yöneltilen sorular arasında yaş, cinsiyet, boy ve kilo vardır. Kişiden alınan bilgiler daha sonra tıp biliminde kazanılan tecrübeye göre oluşturulan bir formüle tâbi tutularak indeks hesaplanır. Fakat doktorların bu algoritmalardan elde edilen neticeleri kesinlikle kendi bilgisiyle karşılaştırması ve süzgeçten geçirmesi gerekir. Çünkü VKİ gibi basit bir algoritmada bile kişinin sporcu veya hamile olması durumunda bu algoritma güvenirliğini yitirebilmektedir. Bütün algoritmalar hekime yol göstericidir; fakat nihai kararı, her hastayı ayrı değerlendirerek hekim vermelidir.

Algoritma ve müzik
Ortaçağ’dan beri müzikte kullanılan algoritmik besteleme, metodolojik bir yaklaşımla müzik üretmek demektir. Meselâ, kanon türü müzik, seslerin tekrarlanarak üretildiği bir müzik türüdür. Bu müzik türünde meselâ iki melodi varsa, bunun oluşturulması için şu algoritma kullanılabilir: Bir melodi-ezgi alınır, sonra kopyası üretilir. Daha sonra bu iki melodi öyle birleştirilir ki, harmonik bir şekilde ilerler; fakat senkronize (başlangıçları aynı) olmaz. Diğer bir ifadeyle, ikisi arasında bir faz farkı vardır. Müzikte bunun gibi birçok algoritma kullanılmaktadır.

İnsan beyni, tabiat ve algoritma
Algoritma deyince akla, en ince hesapları kolayca yapabilecek şekilde yaratılmış, bilgisayarlarda kullanılan hesaplama tekniklerinin geliştirilmesine vesile olan insan beyni gelmektedir. Beynin sırları henüz tam aydınlatılamamış olsa da, biyolojik yapı ve işleyişi hakkında mühim bilgiler elde edilmiştir. Meselâ, bu bilgiler beynin değişik bölgelerinin değişik vazifeleri olduğunu göstermektedir. Vücuttaki organların kontrolüne, muhakeme yapmaya, dili kullanmaya ve hissî aktivitelere karşılık gelen işleyişler, renklerin algılanması, hareketin hesaplanması, kenar, köşe, girinti-çıkıntı gibi fizikî kavramların algılanması gibi son derece karmaşık vazifeler, hep beyin üzerindeki mekanizmalar kullanılarak gerçekleştirilmektedir. Bu vazifeler, işleyişi henüz tam çözülememiş algoritmalarla yapılmaktadır. Meselâ, iki gözden alınan bilgilerin veya görüntülerin tek bir görüntüde birleştirilmesi, bilim adamlarının tam olarak aydınlatamadığı konulardandır. Bilhassa sun’î zekâ alanında, insan beyni taklit edilmeye çalışılsa da, beyin ile gördürülen, yürüme, iletişim kurma, vb. çok basit fonksiyonlar bile ancak pratik olmayan şekilde gerçekleştirilebilmiştir.

Algoritmaların düşündürdükleri
Bilim ve teknoloji geliştikçe yeni buluşlar yapılmakta, çözülemeyen problemlere algoritmalar sunulmakta, çözülmüş problemlerin algoritmaları daha da geliştirilmektedir. Meselâ, 1970’lerde mâkûl bir zaman diliminde çözülemez gözüyle bakılan şifreler, günümüzde geliştirilen algoritmalara ve bilgisayarların artan işlem gücüne paralel olarak rahatça çözülebilmektedir. Dolayısıyla algoritmalardaki bu gelişme, sürekli daha iyi ve tesirli olanın aranması gerektiğine işaret etmekte, ayrıca aynı hedefe götüren çok değişik yollar olabileceğini de hatırlatmaktadır. Bu yüzden, çevremizdeki insanların fikirlerine her zaman açık olmamız ve hattâ bir konuda karar vermeden önce, başkalarına danışıp istişare etmemiz daha doğruyu, iyiyi ve güzeli bulmada bize büyük kolaylık sağlayacaktır.

Kaynaklar
- Introduction to Algorithms, T. H. Cormen, C. E. Leiserson, R. L.Rivest 24. Baskı, 2000
 
Üst