C ile Veri Yapılarında Önemli İsimler

Bu dersteki yapı ve algoritmaların çoğu, onları bulan ya da yaygınlaştıran kişilerin adını taşır: AVL ağacı, Kruskal ve Prim algoritmaları, Dijkstra'nın en kısa yolu, Shell sıralaması, Floyd'un döngü tespiti. Dersin dayandığı kitaplar da C dilinin ve veri yapıları öğretiminin öncülerine aittir.

Her kartta kişinin yaşadığı yıllar, çalıştığı kurum, derste karşılığı olan katkısı ve bu katkının geçtiği slaytlara bağlantılar yer alır. Kartlar konuya göre süzülebilir, aranabilir, soyadına ya da katkı yılına göre sıralanabilir.

Leonhard Euler

1707–1783 · St. Petersburg ve Berlin bilimler akademileri

Königsberg köprüleri · 1736

Königsberg'in yedi köprüsünün her birinden yalnız bir kez geçen bir yürüyüş olup olmadığını sordu. Kara parçalarını düğüm, köprüleri kenar sayarak sorunun şekle değil yalnız bağlantılara bağlı olduğunu gösterdi ve böyle bir yürüyüşün olmadığını kanıtladı. 1736 tarihli bu çalışma çizge kuramının başlangıcı kabul edilir; her düğümün derecesi çift olmadıkça kapalı bir Euler yürüyüşü kurulamaz.

çizge kuramıdereceEuler yürüyüşü

William George Horner

1786–1837 · Kingswood School; Bath'ta kendi okulu

Horner yöntemi · 1819

Polinom köklerini yaklaşık hesaplayan bir yöntemle tanındı; yöntem ondan önce Ruffini'de de görülür. Bugün adı daha çok polinomu iç içe çarpımlarla hesaplama biçimine verilir: a₀ + x(a₁ + x(a₂ + …)) yazımıyla n dereceli bir polinom n çarpmayla hesaplanır. Derste aynı düzen iki yerde kullanılır: n boyutlu bir dizide öğenin ofsetini bulurken ve bir dizgiyi h = h * 31 + c döngüsüyle hash'lerken.

polinomsatır öncelikli adresdizgi hash'i

Arthur Cayley

1821–1895 · Cambridge Üniversitesi

Etiketli ağaç sayısı · 1889

1889'da yayımladığı kısa bir notta n etiketli düğüm üzerinde nⁿ⁻² farklı ağaç kurulabileceğini ileri sürdü. Sonuç ilk kez Borchardt'ın 1860 tarihli çalışmasında görülür, ama bugün Cayley formülü adıyla bilinir. Aynı sayı, n düğümlü tam çizgenin kapsayan ağaç (spanning tree) sayısıdır: K₄ için 4² = 16.

kapsayan ağaçtam çizgesayma

Wilhelm Ackermann

1896–1962 · Göttingen Üniversitesi (doktora); Burgsteinfurt ve Lüdenscheid liseleri

Ackermann fonksiyonu · 1928

Hilbert'in öğrencisi olan bu mantıkçı, hesaplanabilir olduğu hâlde ilkel özyinelemeli (primitive recursive) olmayan bir fonksiyon tanımladı. Bugün ders kitaplarında kullanılan iki değişkenli biçimi Rózsa Péter ile Raphael Robinson'un sadeleştirmesidir. Fonksiyon şaşırtıcı hızla büyür; tersi α(n) ise o kadar yavaş büyür ki ağırlıklı kural ve azaltma kuralıyla çalışan ayrık küme işlemlerinin maliyeti pratikte sabit sayılır.

özyinelemeters Ackermannunion-find

Vojtěch Jarník

1897–1970 · Prag Charles Üniversitesi

Minimum kapsayan ağaç için tek öbekli büyütme · 1930

Asıl alanı sayılar kuramı olan Çek matematikçi, Borůvka'nın sonucunu sadeleştiren bir algoritmayı 1930'da Çekçe yayımladı: ağaç tek bir düğümden başlar ve her adımda ağaçla ağaç dışını birleştiren en ucuz kenar eklenir. Algoritma Prim (1957) ve Dijkstra (1959) tarafından yeniden bulundu; bu yüzden DJP ya da Prim–Jarník algoritması adıyla da anılır.

minimum kapsayan ağaçaçgözlüPrim–Jarník

Otakar Borůvka

1899–1995 · Brno (Masaryk Üniversitesi)

İlk minimum kapsayan ağaç algoritması · 1926

Batı Moravya'da bir elektrik şirketinin şebeke sorusu üzerine, bilinen ilk minimum kapsayan ağaç algoritmasını 1926'da yayımladı. Her turda her bileşen kendinden çıkan en ucuz kenarı seçer; bileşen sayısı her turda en az yarıya indiği için en çok log n tur yeter. Çekçe yazılan çalışma uzun süre fark edilmedi; Sollin 1965'te yöntemi yeniden bulunca algoritma Sollin adıyla da yaygınlaştı. Turlar birbirinden bağımsız olduğu için paralel hesaplamaya uygundur.

minimum kapsayan ağaçbileşenparalel

John von Neumann

1903–1957 · Princeton İleri Araştırmalar Enstitüsü (IAS)

Birleştirme sıralaması · 1945

1945'te EDVAC bilgisayarı için iki sıralı diziyi tek sıralı dizide birleştiren bir yordam yazdı; bu yordam bugün birleştirme sıralaması (merge sort) denen algoritmanın parçasıydı. El yazması, von Neumann'ın kodlarından günümüze ulaşan en eski örnektir. Algoritma parçala ve yönet yaklaşımının ve en kötü durumda da O(n lg n) süren kararlı sıralamanın standart örneğidir.

birleştirmeparçala ve yönetEDVAC

H. S. M. Coxeter

1907–2003 · Toronto Üniversitesi

Sihirli kare kuralı · Coxeter grupları

Çok boyutlu çokyüzlüler ve yansıma grupları üzerine çalışan, yüzyılın önde gelen geometricilerinden biridir. W. W. Rouse Ball'un Mathematical Recreations and Essays kitabının 1939'dan sonraki baskılarını o hazırladı; ders kitabı tek n için sihirli kare kuralını ona dayandırır. Kural n² adımda biter; kaba kuvvetle 25! dizilişi denemek ise milyonlarca yüzyıl sürer. Derste bu fark, iyi bir algoritmanın daha hızlı bir makineden önemli olduğunu göstermek için kullanılır.

sihirli karekaba kuvvetO(n²)

Richard Bellman ve Lester R. Ford Jr.

1920–1984 · 1927–2017 · RAND Corporation

Bellman–Ford algoritması · 1956, 1958

Ford 1956'da, Bellman 1958'de negatif ağırlıklı kenarlara izin veren tek kaynaklı en kısa yol yöntemini yayımladı; aynı fikir Shimbel'de (1955) ve Moore'da da görülür. Bütün kenarlar n − 1 tur gevşetilir; n. turda hâlâ gevşeyen bir kenar varsa çizgede negatif döngü vardır. Bellman dinamik programlamanın, Ford ise Fulkerson'la birlikte en büyük akış kuramının kurucularındandır.

en kısa yolgevşetmenegatif döngü

Robert C. Prim

1921–2021 · Bell Laboratuvarları

Prim algoritması · 1957

Bell Laboratuvarları'nda Kruskal'la aynı dönemde çalışırken minimum kapsayan ağaç için tek öbeği büyüten algoritmayı 1957'de yayımladı; Jarník'in 1930 tarihli yöntemini bağımsız olarak yeniden buldu. Ağaçtaki ve ağaç dışındaki düğümleri birleştiren en ucuz kenar seçildiği için döngü denetimi gerekmez. Dizi ile O(n²) süren algoritma, heap ile O(e log n)'ye iner ve seyrek çizgelerde daha hızlıdır.

minimum kapsayan ağaçaçgözlüheap

Georgy Adelson-Velsky ve Evgenii Landis

1922–2014 · 1921–1997 · Moskova (ITEP, Moskova Devlet Üniversitesi)

AVL ağacı · 1962

“Bilginin düzenlenmesi için bir algoritma” başlıklı 1962 makalelerinde, her düğümde iki alt ağacın yükseklik farkını en çok 1 tutan ilk kendini dengeleyen ikili arama ağacını tanımladılar; yapı adını ikisinin soyadlarının baş harflerinden alır. Denge bozulduğunda tek ya da çift döndürme yapılır ve yükseklik ≈ 1,44 lg n'yi aşmaz. Adelson-Velsky ayrıca Kaissa satranç programının yazarlarındandır; Landis'in asıl alanı kısmi türevli denklemlerdir.

AVL ağacıdenge faktörüdöndürme

Alan J. Perlis

1922–1990 · Carnegie Tech, Yale Üniversitesi

Kılavuzlu ağaçlar · 1960

ALGOL'ün tasarımcılarından biridir ve 1966'da ilk Turing Ödülü'nü aldı. C. Thornton'la birlikte 1960'ta, bir ikili ağaçtaki boş işaretçilerin kök ortada sıradaki önceli ve ardılı göstermek için kullanılabileceğini önerdi; bu işaretçilere kılavuz (thread) denir. Kılavuzlu ağaçta kök ortada gezinme yığın ya da özyineleme olmadan yapılır. Derste sık alıntılanan kısa vecizeleri de 1982'de yayımlanan “Epigrams on Programming” yazısından gelir.

kılavuzkök ortada gezinmeALGOL

Donald L. Shell

1924–2015 · General Electric; Cincinnati Üniversitesi (doktora)

Shell sıralaması · 1959

“A High-Speed Sorting Procedure” başlıklı makalesini 1959'da Communications of the ACM'de yayımladı. Eklemeli sıralama birbirinden h uzaklıktaki öğelere uygulanır ve h küçültülerek 1'e indirilir; uzak takaslar evrikleri hızla azalttığı için komşu takaslı algoritmaların Ω(n²) sınırı aşılır. Süre aralık dizisine bağlıdır ve uzak takaslar yüzünden sıralama kararlı değildir.

aralık dizisieklemeli sıralamaevrik

Joseph B. Kruskal

1928–2010 · Princeton (doktora); Bell Laboratuvarları

Kruskal algoritması · 1956

Minimum kapsayan ağacı bulmak için kenarları maliyete göre sıralayıp döngü oluşturmayan her kenarı ağaca ekleyen yöntemi 1956'da yayımladı. Seçilen kenarlar önce bir orman oluşturur, sonunda tek ağaçta birleşir. Döngü denetimi ayrık kümelerle yapılır: kenarın iki ucu farklı kümelerdeyse kenar alınır ve kümeler birleştirilir; toplam süre O(e log e) olur. İstatistikte çok boyutlu ölçekleme çalışmalarıyla da tanınır.

minimum kapsayan ağaçunion-findaçgözlü

Edsger W. Dijkstra

1930–2002 · Mathematisch Centrum Amsterdam; Eindhoven; Texas Üniversitesi, Austin

En kısa yol algoritması · 1959

1959'da yayımladığı iki sayfalık notta hem tek kaynaklı en kısa yol algoritmasını hem de minimum kapsayan ağaç için Jarník–Prim yöntemini verdi. En kısa yol algoritması açgözlüdür: uzaklığı en küçük olan düğüm kesinleşir ve komşularının uzaklıkları onun üzerinden güncellenir. Bu seçim yalnız negatif olmayan kenar ağırlıklarında doğrudur. Yapısal programlamanın öncülerinden olan Dijkstra 1972'de Turing Ödülü'nü aldı.

en kısa yolaçgözlüöncelikli kuyruk

C. A. R. (Tony) Hoare

1934–2026 · Elliott Brothers; Queen's University Belfast; Oxford Üniversitesi; Microsoft Research

Hızlı sıralama · 1961–1962

Hızlı sıralamayı (quicksort) 1959'da Moskova'da bir sözlük çevirisi üzerinde çalışırken tasarladı; algoritmayı 1961'de Communications of the ACM'de, ayrıntılı çözümlemesiyle 1962'de The Computer Journal'da yayımladı. Dayanak öğeye göre bölümleme ve iki parçanın özyinelemeli sıralanması, ortalamada O(n lg n) süren yerinde bir sıralama verir. Program doğruluğu için Hoare mantığını da geliştirdi ve 1980'de Turing Ödülü'nü aldı. 5 Mart 2026'da Cambridge'de öldü.

quicksortbölümlemeparçala ve yönet

Stephen Warshall

1935–2006 · Technical Operations; Massachusetts Computer Associates

Geçişli kapanış · 1962

1962'de bir Boole matrisinin geçişli kapanışını O(n³) sürede bulan algoritmayı yayımladı: her k için “i'den k'ye ve k'den j'ye yol varsa i'den j'ye de yol vardır” kuralı bütün çiftlere uygulanır. Floyd aynı yıl bu düzeni yol uzunluklarına taşıdı; tüm çiftler arasındaki en kısa yolları bulan algoritma bu yüzden Floyd–Warshall adıyla anılır.

geçişli kapanıştüm çiftlerO(n³)

Robert W. Floyd

1936–2001 · Carnegie Tech; Stanford Üniversitesi

Floyd–Warshall · döngü tespiti

1962'de tüm düğüm çiftleri arasındaki en kısa yolları bulan Floyd–Warshall algoritmasını yayımladı. Bağlı listede iki işaretçiyle (biri bir, öteki iki adım ilerleyen) döngü bulan “tavşan ve kaplumbağa” yöntemi de Knuth'un aktarımıyla ona atfedilir; yöntem O(1) ek bellekle çalışır. 1964'te heap'i aşağıdan yukarı O(n) sürede kuran yöntemi verdi. Program doğrulamasına katkılarıyla 1978'de Turing Ödülü'nü aldı.

tavşan ve kaplumbağatüm çiftlerheap kurma

Donald E. Knuth

d. 1938 · Stanford Üniversitesi

The Art of Computer Programming · 1968'den bu yana

İlk cildi 1968'de çıkan The Art of Computer Programming dizisiyle algoritmaların matematiksel çözümlemesini bir disiplin hâline getirdi; 1974'te Turing Ödülü'nü aldı. Derste birçok sonuç ona dayanır: doğrusal yoklamada beklenen yoklama sayıları, çarpma yönteminde önerilen A ≈ (√5 − 1)/2 sabiti, Shell sıralaması için 1, 4, 13, 40, … aralık dizisi ve Floyd'un döngü tespitinin aktarımı. Knuth–Morris–Pratt dizgi arama algoritmasının da ortak yazarıdır. Sedgewick onun doktora öğrencisidir.

TAOCPalgoritma analizihash

Rudolf Bayer ve Edward M. McCreight

d. 1939 (Bayer) · Boeing Bilimsel Araştırma Laboratuvarları; TU München (Bayer); Xerox PARC (McCreight)

B-ağacı · 1970–1972

Boeing'de birlikte çalışırken büyük sıralı dizinleri diskte tutmak için B-ağacını tasarladılar; makale 1970'te rapor olarak dağıtıldı, 1972'de Acta Informatica'da yayımlandı. m yollu bu dengeli ağaçta her düğüm birçok anahtar tutar ve bütün yapraklar aynı düzeydedir; dolan düğüm ortadaki anahtarı ebeveynine göndererek ikiye bölünür. Bayer'in 1972'de tanımladığı simetrik ikili B-ağaçları, kırmızı-siyah ağaçların öncüsüdür.

B-ağacıdiskveri tabanı dizini

Robert E. Tarjan

d. 1948 · Stanford (doktora); Princeton Üniversitesi

Ayrık kümelerin çözümlemesi · 1975, 1984

1975'te birleştirme kuralıyla yol sıkıştırmanın birlikte kullanıldığı ayrık küme işlemlerinin ters Ackermann fonksiyonu α ile sınırlandığını kanıtladı. Jan van Leeuwen'le (d. 1946, Utrecht Üniversitesi) 1984'te yayımladığı çalışma, bu türden birleştirme ve bulma yöntemlerinin en kötü durum çözümlemesini bir arada verdi. Sleator'la birlikte splay ağaçlarını, Fredman'la birlikte Fibonacci heap'lerini tanımladı; 1986'da Turing Ödülü'nü aldı.

union-findsplay ağacıFibonacci heap

Dennis M. Ritchie

1941–2011 · Bell Laboratuvarları

C dili · Unix

C dilini 1972 dolayında Bell Laboratuvarları'nda Unix işletim sistemini yazmak için geliştirdi; Unix'i Ken Thompson'la birlikte tasarladı ve 1983'te onunla Turing Ödülü'nü paylaştı. Dersteki her yapı C'nin sunduğu araçlarla kurulur: struct ile kayıt, işaretçiyle bağ, malloc ve free ile çalışma anında bellek. Kernighan'la yazdığı The C Programming Language (1978) dersin başucu kitabıdır.

C diliUnixK&R

Brian W. Kernighan

d. 1942 · Bell Laboratuvarları; Princeton Üniversitesi

The C Programming Language · 1978

Ritchie'yle yazdığı The C Programming Language (1978; ANSI C'ye göre ikinci baskı 1988), yazarlarının baş harfleriyle “K&R” diye anılır ve C'nin fiilî tanımı oldu. Kitap kısa, okunaklı örnekleriyle bir programlama dili kitabının nasıl yazılacağına da örnek oldu. AWK dilinin ortak yazarıdır (adındaki K onundur); 2000'den bu yana Princeton'da ders vermektedir.

K&RC diliAWK

Ellis Horowitz

d. 1944 · University of Southern California (USC)

Fundamentals of Data Structures · 1976

Sahni'yle birlikte yazdığı Fundamentals of Data Structures (1976) ve Fundamentals of Computer Algorithms (1978) uzun yıllar dünyada en çok okutulan ders kitapları arasında yer aldı. Kitabın C sürümü Fundamentals of Data Structures in C, Anderson-Freed'in katılımıyla 1993'te çıktı ve bu dersin ana kitabıdır; slaytlardaki “Horowitz 2.2” gibi göndermeler bu kitabın bölümlerini gösterir. USC'de bilgisayar bilimleri bölüm başkanlığını 1990–1999 arasında yürüttü.

ders kitabıADTC

Sartaj Sahni

d. 1949 · Cornell (doktora); Florida Üniversitesi

Horowitz–Sahni kitapları

Horowitz'le birlikte veri yapıları ve algoritmalar kitaplarını yazdı; ders kitabının sistem yaşam döngüsü, algoritmanın tanımı ve ADT anlatımı bu ortak çalışmadan gelir. Florida Üniversitesi'nde ayırt edici profesör (distinguished professor) olarak paralel hesaplama, NP-tamlık ve yaklaşım algoritmaları üzerine çalıştı. 1997'de IEEE Taylor L. Booth Eğitim Ödülü'nü aldı.

ders kitabıalgoritmaparalel hesaplama

Susan Anderson-Freed

ö. 2012 · Illinois Wesleyan University

Fundamentals of Data Structures in C · 1993

Horowitz ve Sahni'nin kitabını C diline uyarlayan üçüncü yazardır; 1993'te çıkan Fundamentals of Data Structures in C beş dile çevrildi. Illinois Wesleyan University'de sosyoloji öğretim üyesi olarak başlayıp programlama dersleri verdi ve 1986'da üniversitenin bilgisayar bilimleri bölümünü kurarak ilk başkanı oldu. 4 Kasım 2012'de öldü.

ders kitabıCeğitim

Robert Sedgewick

d. 1946 · Stanford (doktora); Brown; Princeton Üniversitesi

Hızlı sıralamanın çözümlemesi · Algorithms in C

Knuth'un danışmanlığında 1975'te hızlı sıralama üzerine doktora tezini yazdı; medyan-3 ve küçük parçaları eklemeli sıralamayla bitirme gibi iyileştirmelerin çözümlemesi bu çalışmalardan gelir. Algorithms in C dersin ek kaynaklarındandır; hızlı sıralama bölümündeki kod bu kitaptan alınmıştır. Guibas'la birlikte kırmızı-siyah ağaçları tanımladı ve Princeton'da bilgisayar bilimleri bölümünün kurucu başkanı oldu.

quicksortAlgorithms in Ckırmızı-siyah ağaç

Yıllar ve katkılar özgün yayınlara ve ansiklopedik kaynaklara dayanır. “d.” doğum yılını gösterir ve yaşayan kişiler için kullanılır; “ö.” yalnız ölüm yılı bilinen kişiyi gösterir. Edward McCreight'ın doğum yılı yayımlanmış kaynaklarda bulunamadığı için verilmemiştir.

Sercan KÜLCÜ, Tüm hakları saklıdır.