Pendahuluan
1.1 Pendahuluan
Berbagai model perhitungan formal dirancang dan diselidiki. Sebagian besar penekanan
dalam karya awal di bidang ini, yang disebut teori komputabilitas, adalah pada menggambarkan
atau mengkarakterisasi masalah-masalah yang dapat diselesaikan secara algoritma dan
menunjukkanbeberapa masalah yang tidak mungkin. Salah satu hasil negatif penting, yang
ditetapkan oleh Alan Turing, adalah bukti dari tidak terpecahkannya "masalah yang terhenti".
Masalah penghentian adalah untuk menentukan apakah suatu algoritma yang diberikan
sewenang-wenang (atau program komputer) pada akhirnya akan berhenti (daripada, katakanlah,
masuk ke loop tak terbatas) saat bekerja pada input yang diberikan.
1.3.2 Kebenaran
Ada tiga langkah utama yang terlibat dalam membangun kebenaran suatu algoritma. Pertama,
sebelum kita bahkan dapat mencoba untuk menentukan apakah suatu algoritma itu benar, kita
harus memiliki pemahaman yang jelas tentang apa arti "benar".
1.4.3 Properti
Set pesanan memiliki sejumlah properti yang berguna. Sebagian besar bukti dibiarkan sebagai
latihan; mereka mengikuti dengan mudah dari definisi. Untuk semua sifat, asumsikan bahwa f.
8, h: N → R
BAB II
2.1. Pengantar
Jumlah perbandingan yang dibutuhkan untuk menentukan posisi untuk x. 1.e. berapa
banyak iterasi loop sementara dilakukan, rata-rata, untuk setiap nilai i (= xindex). (Analisis
ini sangat mirip dengan yang dilakukan untuk algoritma Pencarian Berurutan di Bab 1.) Ada
posisi i di mana x mungkin pergi. Gambar 2.4 menunjukkan berapa banyak perbandingan
yang dilakukan tergantung pada posisi. Probabilitas yang termasuk dalam satu posisi tertentu
adalah 1 / i. (Ini tergantung pada fakta yang belum diperiksa sebelumnya oleh algoritme.
Jika algoritme telah membuat keputusan lebih awal berdasarkan nilai x, kami tidak dapat
berasumsi bahwa itu acak sehubungan dengan kunci i-1 pertama.) Dengan demikian jumlah
rata-rata perbandingan untuk memasukkan x adalah 1i-1 i + 1 (i- + EES + 1. 2 i. Sekarang,
tambahkan untuk semua sisipan, i +1 -1-E4 = 21.
Penyisipan Penyortiran adalah algoritma penyortiran yang baik untuk memulai karena
ide di baliknya adalah yang alami dan umum, dan analisis kasus terburuk dan rata-rata
perilaku mudah.Ini juga digunakan sebagai bagian dari algoritma pengurutan yang lebih
cepat. Penggunaan Ruang.
Kedua algoritma di bagian ini menggunakan teknik Divide and Conquer. Mereka
membagi masalah menjadi instance yang lebih kecil dari masalah yang sama dalam kasus ini
menjadi daftar yang lebih kecil untuk diurutkan), kemudian memecahkan instance yang lebih
kecil secara rekursif (yaitu dengan metode yang sama), dan akhirnya menggabungkan solusi
untuk mendapatkan solusi untuk input ori ginal Batas Bawah Untuk Menyortir dengan
Perbandingan Kunci
2.4. Heapsort
Berapa banyak iterasi loop sementara dilakukan, rata-rata, untuk setiap nilai i (= xindex).
(Analisis ini sangat mirip dengan yang dilakukan untuk algoritma Pencarian Berurutan di
Bab 1.) Ada posisi i di mana x mungkin pergi. Gambar 2.4 menunjukkan berapa banyak
perbandingan yang dilakukan tergantung pada posisi. Probabilitas yang termasuk dalam satu
posisi tertentu adalah 1 / i. (Ini tergantung pada fakta yang belum diperiksa sebelumnya oleh
algoritme..
2.5. Shellsort
Mungkin muncul dari cara di mana Algoritma 2.6 ditulis bahwa menggabungkan daftar
dengan total entri N membutuhkan lokasi memori yang cukup untuk entri 2N, karena semua
entri disalin ke C. Dalam beberapa kasus, bagaimanapun, jumlah ruang tambahan yang
dibutuhkan dapat berkurang.
Ini adalah hubungan perulangan yang lebih rumit daripada yang kita lihat sebelumnya
karena nilai An) tergantung pada semua nilai sebelumnya. Kita dapat mencoba
menggunakan kecerdikan untuk menyelesaikan perulangan, atau kita bisa menebak solusinya
dan membuktikannya dengan bujukan.
BAB 3
Seleksi dan Argumen Pihak Lain
1. Masalah Pemilihan
Misalkan L adalah array yang berisi kunci n dari beberapa set yang diurutkan secara
linear, dan biarkan k integer sedemikian rupa sehingga 1 > k < n. Masalah pemilihan adalah
masalah menemukan kunci terkecil k dalam L. Seperti halnya sebagian besar algoritma
penyortiran yang kami pelajari, kami akan menganggap bahwa satu-satunya operasi yang dapat
dilakukan pada kunci tersebut adalah como of pair of key (serta menyalin atau tombol bergerak).
2. Batas bawah
Sejauh ini kami telah menggunakan pohon keputusan sebagai teknik utama kami untuk
menetapkan batas bawah. Ingat bahwa node internal pohon keputusan untuk suatu algoritma
mewakili perbandingan yang dilakukan oleh algoritma.
3. Operator.
Di dalam Matlab dikenal tiga jenis operator yaitu : a) Operator aritmatika yang
digunakan untuk komputasi numerik, b) Operator relasional yang digunakan untuk
membandingkan operand-operand seacara kuantitatif dan c) Operator logika.
Operation Symbol
Addition, a+b +. Example: 5+3
b ^. Example: 3^5
Power, a
Contoh pemakaian:
» a=20; b=5;
» c=a+b;
» d=a-b;
» e=a*b;
» f=a/b;
» g=a\b;
» h=a^2;
25
d = 15
f= 4
h = 400
BAB 4
Dasar Secara informal, grafik adalah himpunan titik yang terbatas. beberapa di antaranya
dihubungkan oleh Fe dan digraf (kependekan dari "graph berarah") adalah sekumpulan titik yang terbatas,
beberapa di antaranya dihubungkan oleh panah. Grafik dan digraf adalah abstraksi yang berguna untuk
masalah dan struktur tumer dalam riset operasi. ilmu komputer, teknik elektro, ekonomi, matematika,
fisika, kimia, komunikasi, teori gama, dan banyak bidang lainnya
kita telah melihat dua cara untuk merepresentasikan grafik atau digraf di atas kertas: dengan
menggambar suatu Gambar di mana simpul diwakili oleh titik dan tepi sebagai garis, dan dengan
membuat daftar simpul dan tepi. Untuk memecahkan masalah dalam program, kita membutuhkan
perwakilan lain. Misalkan G = (V, E) menjadi grafik atau digraf dengan v = n, El = m. dan V = (V, V2
Va l. u dapat diwakili oleh matriks nxn A = (a,), yang disebut matriks adjacency untuk G.
4.2.2 Implementasi
Kami ingin memilih struktur data yang hanya menyimpan informasi yang benar-benar
dibutuhkan, dan menyimpannya sedemikian rupa sehingga operasi yang dibutuhkan oleh algoritma dapat
dilakukan dengan cepat. Biarkan n = | Vl dan m = | El.
Berapa banyak pekerjaan yang penting untuk menemukan pohon spanning minimum? Kami
mengklaim bahwa setiap algoritma spanning tree minimum memerlukan waktu 2 (m) dalam kasus
terburuk karena harus memeriksa, atau memproses dengan cara tertentu, setiap sisi dalam grafik. Untuk
melihat ini, mari G menjadi graf yang terhubung dan berbobot di mana masing-masing sisi memiliki
bobot paling sedikit 2.
Dalam Bagian 4.1 kami secara singkat mempertimbangkan masalah menemukan rute terbaik
antara dua kota di peta rute penerbangan (Gbr. 4.8). Menggunakan sebagai kriteria kami harga tiket
pesawat, kami mengamati bahwa yang terbaik - yaitu, termurah - Diego ke Sacramento adalah membuat
satu perhentian di Los Angeles. Ini adalah satu contoh, atau aplikasi, dari masalah yang sangat umum
pada grafik atau digraf berbobot: menemukan jalur "terpendek" antara dua simpul yang ditentukan.
4.3.2 Algoritma
Diberi grafik berbobot atau digraf G = (V, E. W) dan dua simpul yang ditentukan v W:
masalahnya adalah menemukan jalur terpendek dari v ke w. Sebelum melanjutkan, kami akan
mempertimbangkan apakah kami memerlukan algoritma baru sama sekali.
Paling Banyak Ditelusuri algoritma untuk memecahkan masalah pada grafik atau pemeriksaan
grafik atau proses vertex atau edge.Dalam dua algoritma yang dipertimbangkan sejauh ini, urutan di mana
verde dan edge dipertimbangkan adalah bagian mendasar dari metode yang digunakan untuk
menyelesaikan masalah. atau pesanan, untuk memproses simpul dan vide eogen.
Tepi yang mengarah ke yang baru, yaitu.,. tidak bertanda, simpul selama pencarian grafik di-
kedalaman pertama atau digraf G membentuk pohon berakar yang disebut pohon pencarian kedalaman-
pertama. Jika tidak semua simpul dapat dicapai dari titik awal (root), maka traversal lengkap dari G
membagi simpul menjadi beberapa bagian .
Generalized-first search first-first menyediakan struktur untuk banyak algoritma yang elegan dan
efisien. pencarian kedalaman-pertama bertemu setiap simpul beberapa kali: ketika simpul pertama kali
Nled dan menjadi bagian dari pohon pencarian kedalaman-pertama.
Jika ada satu simpul (dan tepi yang bersinggungan dengannya) dihilangkan dari grafik yang
terhubung, apakah subgraf yang tersisa masih terhubung? Pertanyaan ini penting dalam grafik yang
mewakili semua jenis jaringan komunikasi atau transportasi. Penting juga untuk menemukan simpul
tersebut, penghapusan dapat memutuskan grafik.
Pemrosesan vertex dapat dilakukan ketika sebuah vertex pertama kali dikunjungi, ketika
pencarian kembali ke sana, dan / atau ketika pencarian mundur dari itu. Algoritma bicomponent Iests
untuk lihat apakah sebuah simpul di pohon adalah titik artikulasi setiap kali pencarian mundur. Misalkan
pencarian mencadangkan ke v dari w.
4.5.3 Analisis
Seperti biasa, n = V dan m = | El. Inisialisasi dalam Bicomponents termasuk O (1) anerasi.
BicompDFS adalah kerangka pencarian kedalaman-pertama dengan pemrosesan simpul dan tepi yang
tepat ditambahkan. Kerangka pencarian kedalaman-pertama membutuhkan waktu dalam Qinax (n, m) =
O (m). (Karena G terhubung, m2n-1) Jadi, jika jumlah pembuatan untuk setiap sudut dan tepi dibatasi
oleh konstanta, kompleksitas sepeda adalah dalam O (m). Sangat mudah untuk melihat bahwa ini adalah
kasusnya, Pengamatan yang diperlukan adalah nontrivial hanya ketika pencarian kembali dari w ke v.
4.5.4 Generalisasi
Awalan "bi" berarti "dua." Secara tidak resmi, grafik yang terhubung dua memiliki dua jalur
titik-disjoint antara setiap pasangan simpul (lihat Latihan 4.29). Kita dapat mendefinisikan
triconnectivity (dan, secara umum, k-konektivitas) untuk menunjukkan properti memiliki tiga (secara
umum, k) jalur pemisah titik di antara setiap pasangan simpul.
4.6.1 Definisi
Grafik (tidak diarahkan) terhubung jika dan hanya jika ada jalur antara setiap pasangan simpul.
Keterkaitan untuk digraf dapat didefinisikan dalam salah satu dari dua cara, tergantung pada apakah kita
memerlukan atau tidak bahwa tepi hanya dilintasi dari ekor ke kepala. Sebuah digraf G = (V, E) sangat
terhubung jika, untuk setiap pasangan simpul v dan W. ada jalur dari v ke w (dan karenanya dengan
mempertukarkan peran v dan w dalam definisi, ada jalur dari w ke v juga).
BAB 5
PENCOCOKAN DERET SIMBOL
Dengan pola P, dimungkinkan untuk membuat mesin otomatis terbatas yang dapat
digunakan untuk memindai teks untuk salinan P dengan sangat cepat. Otomat terbatas dapat
dengan mudah diartikan sebagai jenis khusus mesin atau diagram alur, dan pengetahuan
tentang teori automata tidak diperlukan untuk memahami metode ini. Biarkan Σ menjadi
alfabet, atau set karakter, dari mana karakter dalam P dan T dapat dipilih, dan biarkanα =|Σ|.
Diagram alir, atau otomat terbatas, memiliki tiga jenis node:
a. Sebuah simpul dimulai.
b. Sebuah simpul berhenti, yang berarti “Berhenti; kecocokan ditemukan. " Ini
dilambangkan dengan *.
c. Beberapa simpul dibaca, yang berarti “Baca karakter teks selanjutnya. Jika tidak ada
karakter lebih lanjut dalam string teks, hentikan; tidak ada yang cocok. "
Seperti biasa, misalkan P menjadi pola panjang m dan T deret teks panjang n. Untuk
Algoritma 5.1 dan KMP, jika P ditemukan mulai dari, katakanlah, ti , maka masing-masing
karakter t 1 , t 2 , … … … t i+ m−1 telah diperiksa (yaitu, telah berpartisipasi dalam setidaknya satu
perbandingan).
Input: P dan T pola dan string teks; charJump dan matchJumo,. array yang dijelaskan
dalam detik. 5.3.1 dan 5.3.2. Jika T.length tidak diketahui sebelumnya, penggunaan ltS eksplisit
dalam algoritme dapat diganti dengan tes end-of-string. Panjang P Akan ditemukan untuk
mengatur dua array ijp. .
5.3.4 Keterangan
6.1 Pendahuluan
Desain alogaritma top down adalah alami dan kuat. Kami berpikir dan merencanakan dengan
cara pertama, lalu menambahkan lebih detail. Kami memecahkan masalah tingkat tinggi, rumit
yang memecahkannya jadi submasalah.
Pada bagian ini kami sajikan dua masalah itu, meski sangat berbeda, punya solusi serupa.
Mereka harus berfungsi sebagai pengantar yang baik untuk dinamika yang dijelaskan dalam Yao
ming (1982). Perhatikan bahwa kedua solusi yang disajikan disini dapat dipercepat perkalian
urix bersifat asosiatif: A(BC) = (AB)C. kedua, pesanan dapat membuat perbedaan dalam jumlah
pekerjaan yang dilakukan. Perhatikan contoh berikut. Itu adalah elemen-bijaksana
Contoh 6.1
A × B × C × D
Misalkan kita diberi matriks A1 , A2 , . . . , An, dimana dimensi A adalah di-1 × d1. Bagaimana kita
seharusnya menghitung
A1 × A2 × . . . × An
output : factor table yang berisi faktorisasi terbaik untuk setiap urutan matriks: perkalian, jumlah
perkalian yang dilakukan oleh faktorisasi seluruh urutan
Di bagian ini, kami mempertimbangkan masalah bagaimana cara terbaik mengatur seperangkat
kunci (dari beberapa rangkaian yang diurutkan secara linier) dalam pohon pencarian biner untuk
meminimalkan waktu pencarian rata-rata jika kita tahu bahwa beberapa kunci dilihat lebih sering
daripada yang lain. Dalam pohon pencarian biner kinci di node memenuhi property berikut:
kunci disetiap node lebih besar dari semua kunci di subpohon kirinya dan kurang dari semua
kunci si subpohon kanannya.
Kita akan menggunakan string karakter disini, tetapi metode hon kita akan menunjukkan jelas
berlaku untuk string byte dari jenis data lainnya, misalnya untuk pengenalan suara.
Jenis :
Yang paling banyak memiliki perbedaan k. prbedaannya mungkin salahsatu dari tiga k berikut
menjadi bilangan bulan tidak negative. Pencocokan k-perkiraan adalah kecocokan P dalam j
Masalah berikut:
Kami mempelajari alogaritma 4.3 yang menemukan jalur terpendek dan jarak antar dua simpul
yang ditentukan dalam grafik atau digraph bebobot. Alogaritma menggunakan struktur daftar
adjacency tertaut dan berlari dalam O(n) waktu dalam kasus terburuk. Sekarang kita
pertimbangkan
BAB 7
7.1 Pendahuluan
Masalah yang diperiksa dalam bab ini adalah evaluasi polinominal (dengan dan tanpa
preprocessing koefisien), perkalian polynomial (sebagai illustrator diskrit transformasi yang
lebih tua dari fourier), dan multiaplikasi matriks dan vector. Operasi yang biasa digunakan untuk
tugas-tugas tersebut adalah perkalian dan penambahan. Pada peningkatan dikenal penggandaan
mengambil lebih banyak waktu daripada penambahan, dan beberapa algoritma yang disajikan
pada metode putter langsung atau yang paling banyak mengurangi jumlah perkalian dengan
mengorbankan beberapa tambahan-tambahan. Karena itu nilainya tergantung pada biaya relative
dari dua operasi.
7.2 Mengevaluasi Fungsi Polinomial
7.2.1 Algoritma
Biarkan (0) = 4n.Xn + an-1Xn-1 + … + a1x + a0 menjadi polynomial dengan koefisien nyata dan
n ≥ 1. Jumlah perkalian dan penambahan yang dilakukan mungkin ukuran pekerjaan yang wajar,
tetapi beberapa algoritma dapat menggunakan pembagian dan sub-traksi dan melakukan
penggandaan dan penambahan yang lebih sedikit. Jadi khususnya ketika membahas batas bahwa,
kami akan mempertimbangkan jumlah total penggandaan dan pembagian dan jumlah total
penambahan dan pengurangan.
Metode Homer
Apakah ada cara yang lebih baik? Apakah ada cara untuk menghitung ab + ac, mengingat a,b,
dan c, dengan perkalian? Ya, tentu saja dengan memperhitungkannya sebagai a(b+c). Demikian
pula lebih sedikit darimkunci metode Homer untuk mengevaluasi p hanyalah faktorisasi khusus
dari dua p:
Perhitungan dilakukan dalam loop pendek dengan hanya n perkalian dan penambahan n
7.2.2 Batas Bawah untuk Evaluasi Polinomial
Sama seperti kami menggunakan pohon keputusan sebagai model abstrak untuk menetapkan
batas bawah untuk penyortiran dan masalah lainya), kami membutuhkan model untuk algoritma
evaluasi polynomial (dan maslah komputasi terkait lainnya). Ingat bahwa algoritma yang
diwakili oleh pohon keputusan bekerja untuk ukuran input tetap dan tidak memiliki loop. Disini
kita menggunakan model yang disebut program garis lurus.
Secara formal, program garis lurus adalah urutan langkah-langkah terbatas
si=q o r
x 3=¿
x 4 =¿
BAB 8
9. 4. 1 Strategi Fit
Pertama Misalkan S = (5 ...) di mana 0 <S, SI untuk I Sisn. Masalahnya adalah untuk
memasukkan ke dalam tempat sampah sesedikit mungkin, di mana setiap nampan memiliki
kapasitas 1. Solusi optimal dapat ditemukan dengan mempertimbangkan semua cara untuk
mempartisi sekumpulan n item ke dalam paket. . . . Solusi imal dapat item menjadi n atau
kurang Lampie yang tidak bertambah pertama itu. set, tetapi jumlah partisi yang mungkin lebih
dari 1 / 2y / 2 Algoritma perkiraan yang kami sajikan di sini menggunakan strategi yang sangat
sederhana, yang disebut fir pertama, memiliki kerumitan waktu pertama kali dalam en dan
menghasilkan solusi yang baik.
9. 5 Masalah Knapsack dan Subset Sum
Masukan untuk masalah ransel terdiri dari C dan dua vektor. (51 ...), dan (hal... P).
Masalahnya adalah untuk menemukan subset T dari indeks 11. 2. . . . . n) yang
memaksimalkan TP, sesuai dengan batasan s, SC. Menggunakan terminologi dan notasi Bagian
9. 3. FS, = [TITC 11. 2. . . . . n) dan S, SC: dengan kata lain, algoritme aproksimasi harus
menampilkan sekumpulan objek yang cocok dengan karung knap. Nilai solusi yang layak T.
saya e. , v, (T), adalah P.
9. 6. 1 Beberapa Teknik Dasar
Untuk masalah pengemasan knapsack dan bin kami telah menemukan algoritma
perkiraan yang memberikan hasil yang cukup baik: rasio perilaku untuk setiap nilai optimal
tertentu yang dibatasi oleh konstanta kecil.
9. 6. 2. Perkiraan Grafik Pewarnaan
Algoritma pewarnaan graf berbatas keras walinomial dikenal dengan rasio jumlah warna
yang digunakan untuk bilangan optimal dibatasi oleh konstanta. Faktanya, mempertahankan
konstanta kecil yang terikat pada rasio ini adalah NP - hard, yaitu, setidaknya sama kerasnya,
jumlah warna yang menjamin sebagai masalah NP - complete.
9. 6. 3 A Grafik – Algoritma
Pewarnaan ellet G = (1.) Dan n = VI. Untuk banyak heuristik pewarnaan grafik, yang
terburuk dari jumlah warna yang digunakan untuk optimal dapat sama buruknya dengan On),
untuk beberapa u Angn).
BAB 10
ALGORITMA PARALEL
10.1
Paralel,PRAM,dan Model Lainnya
10.1.1 Pendahuluan
Di sebagian besar buku ini,model komputasi kami telah menjadi tujuan
umum,determinan,komputer akses acak yang melakukan satu operasi waktu. Kali ini kami
menggunakan model khusus untuk menetapkan batas yang lebih rendah untuk berbagai masalah
Ini bukan mesin serbaguna, tapi mereka juga melakukan operasi di ene. Waktunya habis.
PRAM madels bervariasi sccording to horw mereka menangani konflik menulis Con kru
Data sewa, tulisan eksklusif) PRAM model sequires thal hanya satu pmenr weie Sel tertentu
pada setiap langkah, sebuah algoritma thal akan memiliki mne dari satu peo Ceor menulis di satu
sel pada saat yang sama merupakan algenthm ilegal. Di Comon Model Wrte, itu legal bagi
beberapa precessor wnte dalam sel ume pada saat yang sama Bime jika dan hanya jika mereka
semua menulis nilai yang sama adalah model Pririy-Wite.
10.3.1 Pengantar