İÇİNDEKİLER
Önsöz 5 Teşekkürler 11 1. Kitap ALGORİTMALAR’ın TEMELLERİ Bölüm 1: Temeller: Algoritmalar = Programlama + Matematik BİLGİSAYARLAR 27 Bilgisayarın Gelişim Tarihi 27 HESAP, PROGRAMLAMA DİLLERİ VE ALGORİTMALAR 37 Programlama Dilleri 39 Algoritmalar 42 Problem Çözümleme 43 Algoritmik Karmaşıklık 44 Notasyonlar 45 Büyük O Notasyonu 45 Teta Notasyonu 47 Omega Notasyonu 47 Algoritma Analizi 49 Algoritmaların Gösterimi 50 SAYI SİSTEMLERİ 52 İlk Algoritmalar. Çarpma Algoritmaları 53 Roma Rakamları ile İlgili Algoritmalar 56 Özdeş Dönüşümler 58 İkili Sayı Sistemi. Sayı sistemlerinin problem çözümünde kullanımı. 60 Tartı Problemi 66 Bölüm 2: Temeller TEMEL VERİ YAPILARI 73 Diziler 73 Listeler 74 Yığınlar ve Kuyruklar 76 Ağaçlar 79 İkili Ağaç Yapıları ve Ağaçlarda Dolaşma Yöntemleri 80 ÖZYİNELEMELER 82 Fibonacci Sayılarının Özyinelemeli Hesaplanması 86 Özyinelemeli Programlamaya İlişkin Örnekler 91 RASTGELE SAYILAR 103 Rastgele Sayı Üretimi Algoritmaları 105 Kayıt Değişikliği (Shift-Register) Algoritmaları 110 Engel Algoritması 111 Belirli Bir (Üssel) Kurala Göre Dağılım Gösteren Rastgele Sayıların Üretimi 114 Bir Rastgele Sayı Üretimi Örneği: Zarlar 117 ÜRETİM FONKSİYONLARI 122 Bölüm 3: Kümeleme Algoritmaları KÜME TEORİSİNİN TEMELLERİ 133 Küme İşlemleri ve Kartezyen Çarpım 134 EKLEME-ÇIKARMA İLKESİNE İLİŞKİN ÖRNEKLER 139 KALE POLİNOMLARI 140 KÜMELENDİRME İŞLEMLERİ. GRUPLAŞTIRMA 144 Küme Elemanlarının Düzenlenmesi 144 Tekrarlı Düzenlemeler 145 Permutasyon 146 Tekrarlı Permutasyonlar 150 KOMBİNASYONLAR 151 Tekrarlı Kombinasyonlar 152 NESNELERİN KUTUYA KONULMASI 157 KOMBİNASYONLARIN OLUŞTURULMASI 160 YER DEĞİŞMELER. 165 TERS ARDIŞIKLIĞA GÖRE PERMUTASYONUN OLUŞTURULMASI 169 K- ELEMANLI ALTKÜMELERİN OLUŞTURULMASI 170 KÜMELERİN ALT KÜMELERE PARÇALANMASI 177 2. Türden Stirling ve Bell Sayıları. 177 Catalan Sayıları 180 Catalan Sayılarının Çözümlerin Sayımında Kullanımı 181 n SIRALI NESNENİN DÜZENSİZLEŞTİRİLMESİ 185 GÜVERCİN YUVASI İLKESİ 189 AKIL USTASI (MASTERMIND) PROBLEMİNİN ÇÖZÜM ALGORİTMASI 192 Bölüm 4: Sayı Teorisi ve Sayılarla İlgili Algoritmalar SAYI TEORİSİ 205 Modüler Aritmetik 205 (ab mod n)‘nin Hesaplanması Algoritmaları 208 EN BÜYÜK ORTAK BÖLEN - EBOB 209 Bölünürlük 209 EBOB’un Belirlenmesi Algoritmaları 210 SAYILARIN BÖLÜNEBİLME KURALLARI 214 N HANELİ SAYI PROBLEMİ 217 ASAL SAYILAR 222 Mersenne Sayıları 227 Asallık Testi ve Asal Sayı Bulma Yöntemleri 227 Asallık Testi 228 Asalların Bulunması 230 Eratosthenes Eleği 231 Sezgisel Yöntem 234 Asal Sayı Bulma Yöntemlerinin Karşılaştırılması 236 KRİPTOLOJİ. RSA GENEL ANAHTAR KRİPTOSİSTEMİ 237 Klasik Şifreleme Teknikleri 238 Makineli Şifrelemeler. 238 Simetrik Algoritmalar 240 Genel Anahtar Algoritmalar 240 RSA Genel Anahtar Kriptosistemi 243 ÖZEL SAYILAR VE SAYILARLA İLGİLİ ALGORİTMİK PROBLEMLER 246 Mükemmel Sayılar 252 Kaprekar Sayıları 256 (3n+1) Problemi (Collatz Problemi) 257 Steinhaus Çevrimi 258 196-Problemi 258 1089 Sayısı 260 Armstrong Sayıları 260 2997 Sayısı 262 Tam Değerli (Diophantine) Denklemler ve Erdös-Straus Varsayımı 262 Bölüm 5: Altın Kesit ve Fibonacci Sayıları ALTIN KESİT VE FİBONACCİ SAYILARI 267 ALTIN ORAN 267 FİBONACCİ ALGORİTMASI VE FİBONACCİ SAYILARI 271 FİBONACCİ SAYILARI 272 ALTIN ORANLA FİBONACCİ SAYILARI ARASINDAKİ BENZERLİK 277 ALTIN DİKDÖRTGEN 278 FİBONACCİ SAYILARININ BİLGİSAYARLI HESAPLANMASI 278 LİNEER HOMOJEN YİNELEMELİ İLİŞKİLERİN SABİT KATSAYILARIYLA ÇÖZÜMÜ. FİBONACCİ SAYILARI İÇİN GENEL İFADENİN BULUNMASI 282 LUCAS SAYILARI 284 ALTIN DİZİ 284 FİBONACCİ SAYILARININ UYGULANMASINA İLİŞKİN ÖRNEKLER 291 Bölüm 6: Graf Teorisi ve Graflarla İlgili Algoritmalar GRAFLAR VE GRAFLARLA İLGİLİ PROBLEMLER 299 GRAFLARIN BİLGİSAYARDA GÖSTERİMİ 302 GRAFLARIN SAYIMI 306 VERİLEN DERECELERE UYGUN GRAFLARIN ÇİZİLMESİ 314 GRAFLARDA ARAMA ALGORİTMALARI 316 Derinine Arama Algoritması 316 Enine Arama Algoritması 318 EULER YOLLARI 321 MİNİMUM YOL PROBLEMİ 327 GEZGİN SATICI PROBLEMİ VEYA HAMİLTON DÖNGÜLERİ 332 Açgöz Algoritmalarla Gezgin Satıcı Probleminin Çözümü 335 En Yakın Komşu Algoritmasına Göre Gezgin Satıcı Probleminin Çözülmesi 336 GRAFLARDA DÖNGÜLER. MİNİMUM AÇILIM AĞAÇLARI. 339 1. Kruskal Algoritması 344 2. Prim Algoritması 345 3. Boruvka (Sollin) Algoritması 347 4. Tersine Çıkarma (Reverse-Delete) Algoritması 349 STEİNER NOKTASI VE STEİNER AĞAÇLARI 350 GRAFLARDA KÜMELENDİRME ALGORİTMALARI 353 Boş Altgrafların Bulunulması Algoritması 355 RENKLEME PROBLEMİ 359 Welch-Powel Renkleme Algoritması 360 Renklendirme Problemi İçin Sezgisel Algoritma 361 İKİ PARÇALI GRAFLAR VE BU GRAFLARIN EŞLEŞTİRİLMESİ 366 Maksimum Eşleştirme Algoritması Veya Evlenme Problemi 369 MODERN ÜRETİM ZİNCİRİNDE İŞLERİN YAPILMA SIRASI 376 DEDİKODU PROBLEMİ 379 MEYVE BAHÇESİ PROBLEMİ 382 ÜÇ KAP PROBLEMİ 386 KÜPLER PROBLEMİ 389 Bölüm 7: Sıralama Algoritmaları SIRALAMA ALGORİTMALARI 395 Sıralama (Sortıng) 395 Yerleştirmeli Sıralama (Insertıon Sort) 396 Direkt Yerleştirmeli Sıralama (Straight Insertion Sort) 397 İkili Yerleştirmeli Sıralama (BINARY ınsertıon sort) 398 Seçmeli Sıralama (Selectıon Sort) 399 Kabarcık Sıralaması (Bubble Sort) 400 Hızlı Sıralama (Quıck Sort) 401 Geliştirilmiş Hızlı Sıralama (Enhanced Quıck Sort) 403 Özyinelemeli Olmayan Hızlı Sıralama (Non-Recursıve Quıck Sort) 405 Birleştirme (Merge) İşlemi 407 Birleştirmeli Sıralama (Merge Sort) 408 Yerleşik Birleştirmeli Sıralama (In Place Stable Merge Sort) 409 Bağlı Listeyle Birleştirme (Lınked-Lıst Merge) 412 Bağlı Listeyle Birleştirme Sıralaması (Lınked-Lıst Merge Sort) 412 Aşağıdan Yukarıya Birleştirme Sıralaması (Merge Bottom–Up) 413 İkili Ağaç Sıralaması (BINARY TREE SORT) 415 Kümeleme Kullanarak Sıralama (Heap Sort) 417 Direkt Basamaklı Sıralama (Straight Radix Sort) 418 Basamaklı Yer Değiştirme Sıralaması (Radix Exchange Sort) 419 Dağıtmalı Sıralama (Distribution Sort) 420 Güvercin Yuvası Sıralaması (Pigeon Hole Sort) 421 İki Yönlü Kabarcık Sıralaması (Shaker Sort) 422 İki Yönlü Kabarcık Sıralaması - 2 (Shaker2 Sort) 423 Asansör Sıralaması (Elevator Sort) 424 Tek-Çift Yer Değiştirmeli Sıralama (Odd-Even Transposıtıon) 425 Shell Sıralaması (Shell Sort) 426 SIRALAMA ALGORİTMALARININ ANALİZİ 427 Bölüm 8: Matematiksel Uygulamalar HORNER ŞEMASI İLE POLİNOMLARIN HESAPLANMASI 433 KÖKÜN GEOMETRİK OLARAK BULUNMASI 435 KÖKÜN ANALİTİK YOLLA BULUNMASI 437 Kübik Denklemlerin Köklerinin Hesaplanması 438 KÖKÜN SAYISAL YÖNTEMLERLE BULUNMASI 441 Yarıya Bölme Yöntemi 442 BABİL KAREKÖK BULMA YÖNTEMİ 443 Tekrarlamalı Yöntem 443 RASYONEL SAYILARIN SÜREKLİ KESİRLERLE GÖSTERİLMESİ 445 2. Kitap KOMBİNATOR ALGORİTMALAR Bölüm 9: Labirentlerle İlgili Algoritmalar LABİRENTTE YOLUN BULUNMASI PROBLEMİ 455 LABİRENTTE YOLUN BULUNMASINA İLİŞKİN YAKLAŞIMLAR 456 Derinine Arama 456 Dalga Algoritması 457 Sezgisel Yaklaşım 459 TEK YOLLU LABİRENTİN ÇİZİLMESİ 460 İKİ NOKTA ARASINDAKİ KESİŞMEYEN YOLLARIN BULUNULMASI 464 LABİRENTTE SİHİRLİ SAYILAR 474 Bölüm 10: Geometrik Algoritmalar GEOMETRİK ALGORİTMALAR 477 NOKTALAR, DOĞRULAR VE POLİGONLAR 477 Basit Kapalı Yolun Bulunması 481 Koordinatlarına Göre Üçgenin Alanının Hesaplanması 483 VORONOİ VE DELAUNAY GRAFLARI 484 Voronoi Diyagramı 484 Delaunay Poligonları 485 Voronoi Diyagramının Böl ve Yen Algoritmasına Göre Çizimi 486 NOKTANIN BÖLGEYE AİT OLMASININ BELİRLENMESİ. İZ SÜRME ALGORİTMASI 490 VERİLEN TÜM NOKTALARI İÇİNE ALAN EN KÜÇÜK YARIÇAPLI ÇEMBERİN BULUNMASI 492 Sırlı Çemberler 492 MİNİMUM KUŞATMA ÇEMBERİ 494 Minimum Kuşatma Çemberi Algoritması 496 EN KÜÇÜK KAPALI ÇEVRİMİN BULUNMASI ALGORİTMASI 499 FRAKTAL GEOMETRİ 503 1. Geometrik Fraktallar 507 1.1. Koch Fraktalı 507 1.2. Ejderha Eğrisi 510 1.3. Sierpinski Üçgeni 512 2. Cebirsel Fraktallar 514 Mandelbrot Fraktalı 514 Julia Fraktalı 515 3. Stokastik Fraktallar 516 L-SİSTEM 516 KAOS OYUNU 518 KUTUPSAL KOORDİNATLAR 519 1. Kardiod (Cardiod) 521 2. Episikloid (Epicycloid) 522 3. Epitrokoid (Epitrochoid) ve Hipotrokoid (Hypotrochoid) 523 GÜZEL SANATLAR GALERİSİ PROBLEMİ 525 İŞBİRLİKÇİ BEKÇİLER PROBLEMİ 527 MONGE,MORLEY, MALFATTİ TEOREMLERİ 529 Monge’nin Çember Teoremi 529 Morley Teoremi ve Malfatti çemberleri 530 Bölüm 11: Paketleme Problemleri PAKETLEME PROBLEMLERİ 533 KARE PAKETLEMESİ 534 ÜÇGEN KAPLAMA 536 ÇEMBER PAKETLEME 537 GİYOTİN PROBLEMİ 542 KARE KARELEME VEYA MÜKEMMEL KARELER 547 Bölüm 12: Aralık Sorgulaması ve kD-Ağaçlar ARALIK SORGULAMASI VE KD-AĞAÇLAR 565 Tek Boyutlu Aralık Sorgulamaları. 565 Sayı Bulmaca Problemi 566 kD Ağaçları 569 NOKTALARIN ARALIKLARA DENGELİ DAĞILIMI 572 N ARALIKLI PARÇAYA N SAYININ DENGELİ YERLEŞTİRİLMESİ PROBLEMİ 575 NOKTA RANKININ VE MAKSİMUM NOKTALARIN BULUNMASI PROBLEMİ 576 DÜZLEMDE KAPALI ÇİFTLER PROBLEMİ 579 Bölüm 13: Parçalanma Problemleri SAYILARIN PARÇALANMASI 583 Problem Tanımı ve Grafiksel Gösterim. 583 Parçalanma Problemi Çeşitleri 585 SAYI PARÇALANMASI İLE İLGİLİ ALGORİTMALAR. 588 PARA PROBLEMLERİ VE ALGORİTMA DEĞERLENDİRİLMESİ 594 n-Para Problemi ile Algoritma Sınıflandırılması 603 8 Para Problemi 609 PARA PROBLEMİ 611 J.STEİNER’İN PASTA PROBLEMİ VEYA ÇEMBERİN BÖLGELERE AYRILMASI 612 Bölüm 14: Boole Cebriyle İlgili Algoritmik Problemler BOOLE CEBRİNİN TEMELLERİ 619 AYRIK SİSTEMLER İÇİN METRİK SINIFLANDIRMA 620 Metrik Özellik Vektörü 626 NP KARAKTERLİ PROBLEMLERİN ÇÖZÜMÜNDE GORBATOV’UN KARAKTERİSTİK ANALİZİNİN KULLANIMI 630 Semantik Eşitleme Yardımıyla Problem Çözümü 631 Bölüm 15: Problem Analizi PROBLEM ANALİZİ 639 DOMİLO 639 Durum Araştırması veya Domino Kaplama 641 Problemin Modellenmesi 643 SÖZCÜK YAKALAMA 648 ÇOK PARAMETRELİ PARÇALANMA VEYA LİG PROBLEMİ 651 TURNUVA ÇİZELGESİNİN DÜZENLENMESİ 651 Problem Tanımı 657 Lig Problemine Genel Bakış 658 Problem Doğrulama 660 Bölüm 16: Kombinator Algoritmalar KOMBİNATOR ALGORİTMALAR 671 POLİOMİNOLAR VEYA KARE HAYVANLAR 671 Problemler 678 LATİN KARELERİ 680 LATİN DİKDÖRTGENLERİ 682 36 Subay Problemi 686 Milli Takım Problemi 686 ŞEBEKE PROBLEMLERİ 686 Şebeke İncelenmesi 686 Matematiksel Tümevarım İlkesi 689 Dikdörtgen Kaplama 691 SUDOKU SAYISAL BULMACASI VE FUTOSHIKI 694 Futoshiki 697 SİHİRLİ KARELER 699 Tek Dereceli Karelerin Yazılması 700 Çift Dereceli Sihirli Karelerin Yazılması 703 SİHİRLİ KARE ÇEŞİTLERİ 705 Asal Sihirli Kareler 706 Sihirli Çarpma Kareler 707 Şeytani Kareler veya Dürer’in Sihirli Kareleri (1514). 708 Sihirli Küpler 709 Sihirli Çemberler. 710 Sihirli Graflar. 711 8 Vezir Problemi ve Sihirli Kareler. 711 SİHİRLİ MATRİSLER 713 EBEDİ TAKVİM ALGORİTMALARI 718 Ebedi Takvim: Algoritma 1. 719 Ebedi Takvim: Algoritma 2. 720 Ebedi Takvim: Algoritma 3. 722 Bölüm 17: Optimizasyon Algoritmaları LİNEER PROGRAMLAMA. SİMPLEKS YÖNTEMİ 727 TAŞIMACILIK PROBLEMİ 732 DİNAMİK PROGRAMLAMA 735 Süreç Planlama 735 Dinamik Programlama Yardımıyla Matrisler Zinciri Çarpımı Probleminin Çözümü 738 En Uzun Ortak Altdizinin Bulunması Problemi 747 Uzaklık Ayarlanması 751 Sırt Çantası (Knapsack) Problemi 755 Bölüm 18: Oyunlar ve Oyunlarda Arama Algoritmaları OYUNLARDA ARAMA ALGORİTMALARI 763 Minimaks Yöntemi 766 Alfa-Beta (Algoritması 767 n-TAŞ PROBLEMİ VE A* ALGORİTMASI 769 JOSEPHUS PROBLEMİ 776 Probleme Genel Bakış 780 LAMBALARIN YAKILMASI PROBLEMİ 783 Problem Tanımı 784 Çözüm Stratejisi 785 OYLAMA VE OY SAYMA YÖNTEMLERİ 789 Oylama Yöntemleri 790 Basit Çoğunluk Yöntemi 790 Çoğunluk Yöntemi 791 Borda Sayısı Yöntemi 792 Condorcet Kriteri 792 Hare Yöntemi 794 Onaylamalı Yöntem 794 Sıralı Çiftler Halinde Karşılaştırma Yöntemi (Eleme Usulü) 795 Sonsöz 797 EKLER 799 EK-1: Programlama Dillerinin Kısa Kronolojisi [i-54] 799 EK-2: Tam ve Kesir Kısımlar 801 EK-3: Kompleks Sayılar 802 EK-4: Seriler 804 EK-5: Çift Dereceden Sihirli Kareler Probleminin Genel Çözümü (Çift-Çift ve Tek-Çift Kareler) 807 EK-6: Matrisler Zinciri Problemi 810 EK-7: Metrik Enformasyon Birimleri 812 EK-8: Bazı Önemli Tarihler 813 Kaynaklar 815 Kavramlar Dizini 825 Kapaktaki Simgelerle İlgili Kısa Bilgi 831 |