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ı |