Algoritma ve Veri Yapıları

Tuğçe Ulukaya
Yetkin Yayın
Published in
4 min readJun 20, 2022

Algoritma, 9. yüzyılda cebir alanında araştırmalar yapan ve cebrin kurucusu olarak bilinen Hârezmî tarafından ortaya çıkmıştır. Hârezmî adını telaffuz edemeyen Avrupalılar, algorizm (Arap sayıları kullanarak aritmetik problemleri çözme kuralları) sözcüğünü Hârezmî’ye ithafen kullandılar. Algorizm daha sonra “algoritma” adını aldı.

Algoritma bir problemi çözmek veya bir görevi tamamlamak için gereken belirli bir dizi talimattır. Algoritma örneklerini günlük hayatımızdan çıkarmaya çalışalım. Kahve hazırlarken, ayakkabımızı giyerken veya bilgisayarımızı çalıştırırken algoritma kullanırız. Peki nasıl mı? Bilgisayar örneğimizi ele alalım.

Ana problem bilgisayarımızın çalışmaması olsun. Birinci adım güç kablosunun takılı olup olmadığını kontrol etmektir. Cevabımız hayır ise yapmamız gereken güç kablosunu takmaktır, cevabımız evet ve hâlâ bilgisayarımız çalışmıyorsa bir sonraki adıma geçmemiz gerekiyor. İkinci adım, uzatma kablosunu inceledikten sonra bilgisayarımız hâlâ çalışmıyorsa tamire götürmemiz gerektiği sonucunu veriyor.

Bilgi Bilgisayar Tarafından Nasıl İfade Edilir?

Bir insan kendini ifade etmek istediğinde ana (native) bir dil kullanıyorsa, bilgisayar da bilgiyi elektronik doğalarına göre belirli tipteki verilerin (resim, tam sayı, dört işlem, ses, yazı vb.) ifade edilmesi için 0 ve 1’lerden (bit) oluşan ikili sayıları (binary numbers) kullanıyor.

İkili sayılarda bulunan 0 ve 1 rakamlarına “binary digit” kelimelerinin kısaltılmış hali olan “bit” denir. Bitler, bilgisayarın elektrik iletimi için kullandığı transistörlerin açık veya kapalı olma durumunu gösterir. İki tane komutları vardır, 0 (kapat) ve 1 (aç).

Photo by Roberto Sorin on Unsplash

Sayı Sistemleri

Sayıları ifade ederken genellikle onluk sayı sistemini kullanırız. Onluk sayı sisteminde aralığımız 0’dan 9’a kadar olduğu için tek basamakta 10 farklı durumu ifade edebiliriz. İkili sistemdeyse tek basamakta 2 farklı durum ifade edilir; 0 ve 1.

Nasıl onluk sayı sistemindeki bir sayıyı ikilik sisteme, ikilik sistemdeki bir sayıyı onluk sisteme dönüştürebiliriz? Onluk tabanda 60 sayısını ikilik sayı sistemine dönüştürelim.

Peki ikilik tabandaki bir sayıyı onluk tabana nasıl dönüştüreceğiz? Sayımız ikilik tabanda 11010 sayısı olsun. Az önce öğrendiğimiz bilgiyi dönüştüreceğiz. Ancak burada 2⁰‘dan başlayacağız çünkü onluk sayı sistemine geçiş yapıyoruz.

Bilgisayarda Sayısal Olmayan Verilerin Tutulması

Bilgisayarda var olan her şeyin 0 ve 1’lerden oluştuğunu öğrendik. Peki ya bir harfi nasıl ifade edebiliriz? Sayısal olmayan bir ifadenin gösterimini bitleri kullanarak sembol ile yaparız. Örneğin, 01100001 sembolü ‘a’ harfini ifade ediyorsa, 01100010 sembolü ‘b’ harfini ifade eder.

Bilgisayarda Verilerin Tutulması

Bilgisayarların içerisinde tutulabilecek veri miktarı sınırlıdır. Bu verilerin en küçük yapı taşları bitlerdir. Bitleri burada depolama alanı/hafıza gibi düşünebiliriz. Ne kadar çok bit olursa o kadar az veri depolama alanımız kalır. Bitlerin 0 ve 1’lerden oluştuğunu öğrenmiştik. Peki bit ve byte kavramlarının nasıl bir ilişkisi var? İnceleyelim.

Karşımıza çıkan problemlerin birisi için 256 sembolden daha fazla bir depolama alanı isteyebiliriz. Peki bu durumda ne yapacağız? Byte’ları yan yana koyarak depolama alanımızı arttıracağız.

Özyineleme (Recursion)

Belirlenen bir problemin alt problemlere bölünüp hesaplanmasına, nerede son bulacağını belirttiğimiz ifadelere özyineleme (recursion) diyoruz. Matematikte; fonksiyonlarda, faktöriyelde ve dört işlemde özyineleme karşımıza çıkar. Özyinelemeyi fibonacci serisi ile pekiştirebiliriz.

Bir problem ele alalım, belirli bir alana yeni doğmuş tavşan çifti (bir dişi, bir erkek) konuluyor. Her tavşan çifti ikinci aydan itibaren yetişkin hâle geliyor ve her ay yeni bir tavşan çifti (bir dişi, bir erkek) doğuyor. Ancak bir varsayımımız var, tavşanlar hiç ölmüyor. Bu alanda bir yıl sonra kaç çift tavşan olur?

Problemimizde üçüncü terimden sonra, her terim kendisinden önceki ardışık iki terimin toplamıyla bulunur. Problemin çözümünde her ay için sırasıyla {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144…} sayıları elde edilir.

Sonuç olarak, fibonacci serisi herhangi bir doğal sayıdan başlayarak her önceki iki sayının toplamı şeklinde bir kurala sahiptir. 0,1,1,2,3,5,8… gibi sonsuz sayıdan oluşur. Kendinden bir önceki eleman ile özyinelemeli olarak toplam serinin devam sayısını verir.

--

--