Veri Yapıları ve Algoritmalar konusu; Bilgisayar Mühendisliği
kurumsal temellerinin en önemli konularından birisidir; amacı ise program veya
yazılım tasarımında sistemin kullanacağı verilerin bellekte en uygun şekilde
tutulması ve onları kullanacak en optimum algoritmaların geliştirilmesi üzerinedir.
Verilerin bellekte tutulma şekilleri onların işlenmesini de doğrudan etkilemektedir;
dolayısıyla hem bilgisayar belleğinin tasarruflu kullanılması hem de geliştiren
algoritmaların hızlı çalışması için veri modelleri, veri yapıları ve bazı
ünlü algoritmaların bilinmesi gerekir. Öyle ki, çok özel bir problem olmadığı
sürece, zaten onunla ilgili evrensel bir algoritma geliştirilmiştir. Tasarımcının bu
algoritmaları bilmesi, karşılaştığı benzer problemlere uyarlayabilmesi veya var
olan birkaç seçenekten hangisinin en uygun olduğunu seçebilmesi gerekir. İşte bu
kitap okuyucuya böylesi birikimi kazandırmak için hazırlanmıştır. Bu konuları
açıkça bilmeyen mühendislerin her zaman bir eksiklik hissettikleri aşikârdır.
Kitabımız, üniversitelerimizin bilgisayar mühendisliği, yazılım mühendisliği ve
bilişimle ilgili diğer bölümlerinde okutulan “Veri Yapıları ve Algoritmalar”
dersleri için ciddi bir ders kitabı olma özelliğindedir. Ayrıca profesyonel yazılım
tasarımcıları için de ciddi bir başvuru kaynağıdır. Ancak, böylesi nitelikli ve
içeriği zengin bir kitabın ciddi ve evrensel düzeyde eğitim veren üniversiteler
için uygun olduğunu da belirtmemiz gerekir.
"Veri Yapıları ve Algoritmalar: Yapay Zeka
Uygulamaları Ara Algoritmalarıyla" adlı bu kitabımız program geliştiren, matematik ve mühendislik
problemlerini bilgisayar ortamında modelleyerek çözmek isteyen, iş dünyasına
yönelik yazılım tasarımları yapan her düzeyden programcı veya yazılımcılar için
ciddi bir başvuru kitabıdır.
Veri
Yapıları ve Algoritmalar PDF indir
Önsöz.
Ülkemizde bilişim alanında kitap yazmak iki
açıdan, diğer alanlara göre çok daha zor ve risklidir. Bir yandan, bu bilim
dalındaki başdöndürücü gelişmeler kitapları çok kısa sürede eskitmektedir.
Diğer yandan, konu hem akademik ve hem de sektörel olduğundan, iki farklı okuyucu
kitlesine birlikte hitap etmenin getirdiği zorluk vardır. Öğrenciler bir ders kitabı
formatını isterken, sektör mensupları da daha pratik ve referans türü kitaplar
görmek istiyorlar.
İşte böyle zor bir ortamda genç
bir yayınevi genç bir akademisyenin bilişim alanında yazdığı kitapları peşpeşe
çıkardığında, yayın ve eğitim dünyası için sevinmek gerekir. Papatya
Yayıncılık ve yazarı Dr. Rifat Çölkesen gerek içerik ve gerek formatıyla kitaba
değer verdiklerini göstermektedirler. Bu kitapların üretimindeki kalite ve
profesyonellik artık okuyucuların özlediği düzeydedir. Bugün kişisel
bilgisayarlarda profesyonel masaüstü yayıncılığının tüm olanakları varken,
bilgisayar alanında kitap yazanların bundan yararlanmıyor olması düşünülemezdi.
Günümüzde
Bilgisayar Mühendisliği, Matematik-Bilgisayar veya İnformatik adı altında eğitim
yapılan tüm bölümlerde Veri Yapıları ve Algoritmalar dersi artık omurga ders
olmuştur. Öğrencinin bu derste iyi yetişmesi o bölümün ciddiliği için esas kriter
olmuştur. Kitap bu açıdan, içerik zenginliği ve hacmi ile, hem lisans ve hem de
lisansüstü düzeyinde okutulabilecek düzeydedir.
Diğer olumlu gördüğüm bir nokta da Sayın Çölkesen'in
yazdığı kitapların arkasında oluşudur. Bundan önceki kitaplarında olduğu gibi,
bilimdeki gelişmelere paralel olarak, uygun aralıklarla kitaptaki konuları
güncelleyecek ve okuyucuya destek olacaktır; bunun için gerekli bilgi ve gayreti
vardır.
Sayın Çölkesen'in Veri Yapıları ve
Algoritmalar adlı yeni kitabına öğrenci ve öğretim üyelerim adına hoşgeldin
diyor, ülkemiz eğitim dünyasında yararlı olmasını diliyorum. - Prof.Dr.
Bekir KARAOĞLU
İÇİNDEKİLER
Önsöz
Kitap
Hakkında
Bölüm 1. Bilgisayar Bilimleri
Dünyası
Yazılım ve Program
Program Kodu
Donanım ve Bellek
İşletim Sistemi
Veri Yapısı ve Veri Modeli
Algoritma
Program Çalışma Hızı ve Büyük O
Programın Bellek Gereksinimi
İşlemci, Makina Kodu ve Assembly Dili
Programlama Dilleri
Görsel Programlama Dilleri
Nesneye Dayalı Programlama Dilleri
Editör, Derleyici ve Profiler
Veritabanı ve SQL
ORACLE, SYBASE, MYSQL
Böl ve Yönet Yaklaşımı
Kullanıcı/Sunucu Mimarisi
Network Yazılımı/Programlaması
Internet ve TCP/IP Hizmet Türleri
Kıyaslama (Benchmarking)
Yazılım
Modelleme Dilleri
Sorular
Bölüm 2. Algoritmik Yaklaşımda
C Dili Esnekliği ve
Özellikleri
2.1. C
Dilinde Bilinmesi Gerekenler
Bir C programı
2.2. Bellek Düzeni ve Diziler
2.3. Yapısal Veri Tanımlaması
2.4. İşaretçiler
2.5. İşaretçi ve Diziler Arasındaki İlişki
2.6. Dinamik Bellek Kullanımı
2.7. Fonksiyon Çağırma Yöntemleri
2.8. Fonksiyona Veri/Parametre Aktarımı
2.9. Rekürsif Fonksiyonların Çalışma Şekli
2.10. Disk ve Saklama Birimlerine Erişim
2.11. Proje Çalışması
2.12. Özet
2.13. Sorular
Bölüm 3. Veri Yapıları ve Veri
Modelleri
3.1. Veri
Yapıları
3.1.1. Temel Veri Yapıları
Karakter,
Tamsayı, Kesirli Sayı
Katar ve Karakter Dizisi
Dizi ve Matrisler
3.1.2. Tanımlamalı Veri Yapıları
Topluluk
Ortaklık
bit Düzeyinde
3.2. Veri
Modelleri
Ağaç Veri Modeli
Graf Veri Modeli
Durum Makinası Veri Modeli
Veritabanında İlişkisel Veri Modeli
Ağ (Network) Veri Modeli
3.3. Proje Çalışması
3.4. Özet
3.5. Sorular
Bölüm 4. Algoritmik
Program Tasarımı ve Akış Şemaları
4.1. Program ve Yazılım Tasarımı
4.2. Algoritma Tasarımı
Algoritmik,
“Heuristic” Yaklaşımlar
Kaba-kod ve Gerçek Kod
Akış Şemaları
Nesneye Dayalı
Yaklaşımla Algoritma Tasarımı
Algoritma ve İlişki
Tanımlaması için Çeşitli Yöntemler
UML Diyagramları
4.3. Akış Şemaları
4.3.1.
Çeşitli Akış Şemaları Örnekleri
4.3.2. N-S (Nassi-Schnederman) Şemaları
4.3.3. W-O (Warnier-Orr) Diyagramları
4.4. Proje Çalışmaları
4.5. Özet
4.6. Sorular
Bölüm 5. Program
Çalışma Hızı ve Bellek Gereksinimi
5.1. Temel Kavramlar
5.2. Program Çalışma Hızı ve Karmaşıklık
Başarım Sınaması (Benchmarking)
Algoritma Analizi
5.2.1. Yürütme Zamanı (Running
Time)
5.2.2. Karmaşıklık (Complexity)
5.3. programın Bellek Gereksinimi
5.4. Asimtotik Notasyonlar
5.5. Proje Çalışmaları
5.6. Özet
5.7. Sorular
Bölüm 6. Sıralama
Algoritmaları
6.1. Temel Kavramlar
6.2. Araya Sokma Sıralaması (Insertion Sort)
6.3. Seçmeli Sıralama (Selection Sort)
6.4. Kabarcık Sıralaması (Bubble Sort)
6.5. Birleşmeli Sıralama (Merge Sort)
6.6. Kümeleme Sıralaması (Heap Sort)
6.7. Hızlı Sıralama (Quick Sort)
6.8. Algoritmaların Karşılaştırılması
6.9. Proje Çalışmaları
6.10. Özet
6.11. Sorular
Bölüm 7. Arama
Algoritmaları
7.2. İkili Arama (Binary
Search)
Sıralı Dizi Üzerinde İkili Arama
İkili Ağaç Üzerinde İkili Arama
7.3. Çırpı Algoritması (Hash Algorithm)
Çatışma Çözümlemesi: Açık Adresleme, Bağlantılama
7.4. Proje Çalışmaları
7.5. Özet
7.6. Sorular
Bölüm 8. Bağlantılı
Listeler ve Uygulamaları
8.1. Temel Liste Kavramları
Tek Yönlü Bağlantılı Liste
Çift Yönlü Bağlantılı Liste
Çevrimsel Bağlantılı Liste
Karma Bağlantılı Liste
8.2. Bağlantılı Listelerin
Bellekte Tutulma Biçimleri
8.3.
Ayrık Alanlarda Bağlantılı Liste Uygulaması
8.4. Tek Yönlü Bağlantılı Liste Uygulaması
8.5.
Dizi Üzerinde Bağlantılı Liste Uygulaması
8.6. İki-Yönlü Bağlantılı Liste Uygulaması
8.7. Proje Çalışmaları
8.8. Özet
8.9. Sorular
Bölüm 9. Yığın ve
Kuyruk Yapısı
9.2. Kuyruk Davranışı ve Tasarımı
9.3. Öncelikli Kuyruk Çözümleri
9.4. Proje Çalışması
9.5. Özet
9.6. Sorular
Bölüm 10. Ağaç Veri
Modeli
10.1. Ağaçlar Üzerine Temel Kavramlar
10.2. Ağaç Türleri ve Ağaç Üzerindeki
İşlemler
10.3. Ağaçların Bellek Üzerinde Tutulması
10.3.1. Düğüm Bağlantısıyla Ağaç Kurulması ve Veri Yapısı
10.3.2. İndis-Bağıntısıyla Ağaç Kurulması
10.4.İkili Ağaçları
10.4.1. İkili Ağaç
Üzerinde Dolaşma/Düğümlere Erişim
10.4.2. Bağıntı
Ağaçları
10.4.3. Sıralı İkili
Ağaçlar İçin Algoritmalar
Ağaca Düğüm Ekleme
Düğümleri Listeleme/Dolaşma
Düğüm Silme Algoritması
Düğüm Sayısını Bulma
10.5. Dengeli Ağaç ve AVL Ağaç Yapısı
10.6. Kümeleme Ağacı
10.7. Trie
Ağacı ve Sözlük Ağacı
10.8. Kodlama ve Kodlama Ağaçları
10.8.1.
Huffman Kodlama Ağacı
10.8.2.
Shannon-Fano Kodlama Ağacı
10.9.
Çeşitli Ağaç Şekilleri
10.10. Proje Çalışmaları
10.11. Özet
10.12. Sorular
Bölüm 11. Ağaç
Uygulamaları
Bölüm 12. Graf Veri
Modeli
12.2. Grafların Bellek Üzerinde Tutulma Biçimi
12.2.1. Matris Üzerinde Tutulması
12.2.2. İki-Dizi Üzerinde Tutulması
12.2.3. Bağlantılı Liste ile Tutulması
12.2.4. Dizili-Bağlantılı Liste ile Tutulması
12.3. Graf Üzerinde Dolaşma
DFS – Önce Derinlik Sınaması
BFS – Önce Genişlik Sınaması
12.4. Greedy Algoritması/Yaklaşımı
Bölüm 13. Graf Algoritmaları
13.1. En Kısa Yol (Shortest Path) Problemi Bulunması
13.1.1. Dijkstra’nın Algoritması
13.1.2. Bellman ve Ford Algoritması
13.1.3. Floyd’un Algoritması
13.2. Yol Ağacı (Spanning Tree) Bulunması Problemi
13.2.1. Kruskal’ın Algoritması
13.2.2. Prim’in Algoritması
13.2.3. Soolins’in Algoritması
13.3. Gezgin Satıcı (Salesman) Problemi
13.4. Proje Çalışması
13.5. Özet
13.6. Sorular
Bölüm 14. Durum Makinası ve Gramer Çözümleme
14.1. Durum Makinası Kavramları
14.2. Sonlu Duurm Makinası
14.3. Turing Makinası
14.4. Gramer
Çözümleme
14.5. Proje Çalışması
14.7. Sorular
Bölüm 15. Veri Sıkıştırma
Yöntemleri
15.1. Verideki Fazlalıklar
15.2. Sıkıştırma Teknikleri
15.4. Adaptif Sıkıştırma
Teknikleri
15.5. Proje Çalışması
15.6. Özet
15.7. Sorular
Bölüm 16. Yazılım
Geliştirme Süreci
16.1. Yazılım Mühendisliği ve
Yöntembilimleri
16.1.1. Yazılım Mühendisliği Metodolojileri
16.2.
Yazılım Mühendisliği Standartları
16.3.
Analiz, Tasarım ve Geliştirme Süreçleri
16.4.
Proje Çalışmaları
16.5.
Özet
16.6.
Sorular
.
Kaynakça
Dizin
Diğer programlama ve mühendislik
kitaplarımızı incelemek için buraya tıklayınız.
Akademik Kitaplar, Bilimsel Kitaplar, Teknik
Kitaplar, Üniversite Ders Kitapları |