Anda di halaman 1dari 23

BAB 1

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.2 Bahasa Algoritma, Matematika, dan Struktur Data


1.2.1 Bahasa Algoritma
Kriteria utama untuk memilih bahasa algoritma untuk digunakan dalam buku ini adalah
bahwa algoritma harus mudah dibaca.
1.2.2 Beberapa Latar Belakang Matematika
Berbagai konsep, alat, dan teknik matematika digunakan dalam buku ini.Beberapa harus
sudah tidak asing lagi bagi pembaca, beberapa akan menjadi baru. bagian ini adalah untuk
memberikan tinjauan singkat dan referensi untuk beberapa definisi properti mental tentang
logaritma, probabilitas, permutasi, dan rumus penjumlahan.
1.2.2 Struktur Data
Kami berasumsi bahwa pembaca telah terbiasa dengan struktur data seperti daftar tertaut,
tumpukan, antrian, dan pohon biner. Maksud bagian ini adalah untuk meninjau secara singkat
struktur-struktur dasar yang digunakan dalam buku ini dan beberapa terminologi dan notasi yang
relevan. Elemen individu (juga disebut catatan dan kadang-kadang node) dari struktur data dapat
dibagi menjadi beberapa bidang. Setiap bidang diberi nama. contoh, format rekaman untuk
daftar tertaut mungkin For ListNode = record name: CharacterString; umur: integer; tautan:
NodePointer dan Sebuah pointer adalah variabel, elemen array, atau entri bidang yang
"menunjuk ke" sebuah node; nilainya adalah alamat (atau indeks array) yang menunjukkan
lokasi sebuah node.
1.3 Menganalisa Algoritma dan Masalah
1.3.1 Pendahuluan
Kami menganalisis algoritme dengan maksud untuk memperbaikinya, jika mungkin, dan untuk
memilih di antara beberapa yang tersedia untuk suatu masalah. Kami akan menggunakan kriteria
berikut:
1. Ketepatan
2. Jumlah pekerjaan yang dilakukan
3. Jumlah ruang yang digunakan
4. Kesederhanaan, kejelasan
5. Optimalitas
Kami akan membahas masing-masing kriteria ini secara panjang lebar dan memberikan beberapa
contoh aplikasi mereka. Ketika mempertimbangkan optimalitas algoritma, kami akan
memperkenalkan teknik untuk menetapkan batas bawah pada kompleksitas masalah.

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.3.3 Jumlah Pekerjaan yang Dilakukan


Bagaimana kita mengukur jumlah pekerjaan yang dilakukan oleh suatu algoritma?
Ukuran yang kita pilih harus membantu dalam membandingkan dua algoritma untuk masalah
yang sama sehingga kita dapat menentukan apakah satu lebih efisien daripada yang lain. Akan
berguna jika ukuran pekerjaan kami memberikan beberapa indikasi tentang bagaimana waktu
eksekusi aktual dari kedua algoritma dibandingkan, tetapi kami tidak akan menggunakan waktu
eksekusi sebagai ukuran pekerjaan karena sejumlah alasan.

1.3.4 Analisis Rata-Rata dan Kasus Terburuk Kami


Sekarang memiliki pendekatan umum untuk menganalisis jumlah pekerjaan yang
dilakukan oleh suatu algoritma, kita membutuhkan cara untuk mempresentasikan hasil analisis
secara ringkas.Jumlah pekerjaan yang dilakukan tidak dapat digambarkan oleh satu angka karena
jumlah langkah yang dilakukan tidak sama untuk semua Kami pertama-tama mengamati bahwa
jumlah pekerjaan yang dilakukan biasanya tergantung pada ukuran input.
1.3.5 Penggunaan
Ruang Jumlah sel memori yang digunakan oleh suatu program, seperti jumlah detik yang
diperlukan untuk menjalankan suatu program, tergantung pada implementasi tertentu. Namun,
beberapa kesimpulan tentang penggunaan ruang dapat dibuat hanya dengan memeriksa suatu
algoritma. Suatu program akan membutuhkan ruang penyimpanan untuk instruksi, konstanta
dan variabel yang digunakan oleh program, dan input data.
1.3.6 Kesederhanaan
Seringkali, meskipun tidak selalu, kasus bahwa cara paling sederhana dan paling mudah untuk
menyelesaikan masalah bukanlah yang paling efisien. Namun kesederhanaan dalam suatu
algoritma 'adalah fitur yang diinginkan. Ini mungkin membuat memverifikasi kebenaran dari
algoritma lebih mudah, dan itu membuat menulis, debugging, dan memodifikasi program lebih
mudah, Waktu yang diperlukan untuk menghasilkan program debugged harus dipertimbangkan
ketika memilih suatu algoritma, tetapi jika program itu akan digunakan sangat sering ,
efisiensinya mungkin akan menjadi faktor penentu dalam pilihan.
1.3.7 Optimalitas
Mengatakan bahwa suatu algoritma adalah optimal (dalam kasus terburuk) jika tidak ada algo
maka kosekuensinya perusakan data dan pengolahan data tidak akan sistematis

1.3.8 Batas Bawah dan Kompleksitas Masalah


1. Rancang apa yang tampaknya merupakan algoritma yang efisien, sebut saja A. Analisis A
dan temukan fungsi W sehingga, untuk input ukuran n, A paling banyak melakukan W (n)
langkah-langkah dalam kasus terburuk. fungsi F, buktikan teorema yang menyatakan bahwa,
untuk algoritma apa pun di dalam kelas di bawah con sideration, ada beberapa input ukuran n
yang algoritma harus melakukan setidaknya F (n) langkah.
2. Jika fungsi W dan F sama, maka algoritma A optimal (untuk kasus terburuk). Jika tidak,
mungkin ada algoritma yang lebih baik atau batas bawah yang lebih baik.

1.3.9 Implementasi dan Pemrograman


Implementasi adalah tugas mengubah algoritma menjadi program komputer. Algoritma
dapat dideskripsikan dengan instruksi terperinci seperti bahasa komputer untuk memanipulasi
variabel dan struktur data, atau dengan sangat abstrak, penjelasan tingkat tinggi dalam bahasa
Inggris mengenai metode solusi untuk masalah abstrak, tidak menyebutkan representasi
komputer dari objek. terlibat.

1.4 Fungsi Pengelompokan berdasarkan Tingkat Pertumbuhannya


1.4.1 Definisi dan Notasi
Menggunakan notasi biasa untuk bilangan asli dan bilangan real; yaitu: N = (0, 1, 2,
3, ..} R = himpunan bilangan real N '= {1, 2, 3, ... R * = himpunan real positif Biarkan f dan g
menjadi fungsi dari N ke R. 'Gambar 1.4 menggambarkan secara informal set yang kami
gunakan untuk menunjukkan hubungan antara urutan fungsi. Menjaga gambaran dan definisi
informal dalam pikiran akan membantu memperjelas definisi dan properti formal berikut.' (0) n8
=, Pembaca yang berencana untuk membaca buku dan makalah lain harus menyadari bahwa
definisi 0, 0. 52. dan o belum terstandarisasi, variasi mungkin ditemui.

1.4.2 Seberapa Penting Pemesanan?


Waktu berjalan untuk beberapa algoritma aktual untuk masalah yang sama. (Kolom
terakhir tidak sesuai dengan algoritma untuk masalah; itu disertakan untuk menunjukkan
seberapa cepat fungsi eksponensial tumbuh, dan karenanya seberapa buruk algoritma
eksponensial.)

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

1.5 Mencari Daftar yang Terurut


1.5.1 Masalah dan Beberapa Solusi
Untuk menggambarkan ide-ide yang disajikan pada bagian sebelumnya, kami akan
mempelajari masalah yang sudah dikenal. Diberikan array L yang berisi n entri yang diurutkan
dalam urutan nondecreasing, dan diberi nilai x, cari indeks x dalam daftar atau, jika x tidak ada
dalam daftar, kembalikan 0 sebagai jawabannya.

1.5.2 Analisis Kasus Terburuk dari Pencarian


Biner Pilihan yang masuk akal dari operasi dasar untuk Pencarian Biner Algoritma
adalah perbandingan x ke daftar entri. Misalkan W (n) adalah jumlah perbandingan yang
dilakukan oleh algoritma dalam kasus terburuk pada daftar dengan entri n.

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.

2.2. Jenis Penyisipan

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.

2.3. Memisahkan Daftar Untuk Quicksort

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.

2.6. Pemilihan Eksternal

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.

1.Operator Aritmatika tipe data sederhana

Tabel 3.1. Operator Aritmatika

Operation Symbol
Addition, a+b +. Example: 5+3

Subtraction, a-b -. Example: 7-2

Multiplication, a x b *. Example : 3.24*4.56

Division, a:b / or \. Example: 75/3=3\75

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;

» c (menampilkan nilai c hasil jumlah) c =

25

» d (menampilkan nilai d hasil pengurangan)

d = 15

» e (menampilkan nilai e hasil perkalian) e


= 100
» f (menampilkan nilai f hasil pembagian)

f= 4

» g(menampilkan nilai g hasil pembagian) g


= 0.2500

» h (menampilkan nilai h hasil pemangkatan)

h = 400
BAB 4

GRAFIK DAN DIGRAF

4.1 Definisi dan Representasi

4.1.1 Beberapa Definisi dan Contoh

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

4.1.2 Representasi Komputer dari Grafik dan Digraphs

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.

4.2.3 Analisis (Waktu dan Ruang)


Misalkan n = | v] dan m = | E. Jumlah operasi inisialisasi dilakukan adalah linear dalam n.
Jumlah operasi (perbandingan bobot, perubahan nilai pointer, dll.) dilakukan untuk setiap tepi ketika
melintasi daftar adjacency di loop "while ptr = nil" tidak tergantung pada n dan m, sehingga total waktu
yang diperlukan untuk pekerjaan yang dilakukan di semua iterasi loop traversal adalah dalam O (m).

4.2.4 Batas Bawah

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.

4.3 Algoritma Jalur Terpendek

4.3.1 Latar Belakang

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.

4.4 Melintasi Grafik dan Digraf

4.4.1 Grafik Terlebih Dahulu dan Terlebih Dahulu

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.

4.4.2 Pencarian Kedalaman-pertama dan Rekursi


Kita telah melihat bahwa pencarian kedalaman-pertama dapat dengan mudah dijelaskan oleh
sebuah rekursif ag rithm. Bahkan, ada hubungan mendasar antara rekursi dan pencarian mendalam.
Dalam program rekursif, struktur panggilan dapat digambarkan sebagai root di mana setiap simpul selain
root mewakili panggilan rekursif ke prope.

4,4.4 Pohon Pencarian Kedalaman pertama

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 .

4.4.5 Skeleton Pencarian Kedalaman-pertama

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.

4.5 Komponen yang Dihubungkan dengan Grafik dari Grafik

4.5.1 Poin Artikulasi dan Komponen yang Berhubungan

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.

4.5.2 Algoritma dua Komponen

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 Komponen-komponen Digraf yang sangat terhubung.

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

5.1 Sebuah Permasalahan dan Solusi yang Mudah


Mencocokkan deret simbol byte yang berisi data grafis, kode mesin, atau data lainnya,
dan mencocokkan sublist dari daftar tertaut. Biarkan P menjadi pola dan T teks, dan biarkan
m menjadi panjang (yaitu, jumlah karakter dalam) P dan n panjang T. Kami akan
menganggap bahwa n cukup besar relatif terhadap m. Dalam algoritme kita akan
menggunakan P.lenght dan T.lenght untuk menunjukkan panjangnya. Karakter dalam P dan
T masing-masing dilambangkan dengan p's dan t's berturut-turut.

5.2 Algoritma Knuth-Morris-Pratt

5.2.1 Pencocokan Pola Dengan Automata Terbatas


Kami pertama-tama menjelaskan secara singkat, tanpa algoritma formal, suatu
pendekatan terhadap pola. pencocokan masalah yang memiliki beberapa poin penting baik
tetapi juga beberapa kelemahan. Konstruksi yang digunakan oleh algoritma utama dari
bagian ini disarankan oleh metode yang kami jelaskan sekarang dan menyelamatkan
beberapa kelebihannya sambil menghilangkan kekurangannya.

 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. "

5.3 Algoritma Boyer-Moore


5.3.1 Terobosan Ide Baru

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).

5.3.2 Sebuah Ide Lama

Cukup menggunakan charJump untuk melewati teks membuat algoritma Boy'er-Moore


berjalan jauh lebih cepat daripada algoritma Knuth-Mom's-Pratt untuk banyak kasus.
Menggabungkan charlump dengan ide yang mirip dengan panah gagal dalam algoritma KMP
dapat meningkatkan algoritme lebih lanjut. 

5.3.3 Algoritma Pemindaian Boyer-Moore

 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

Kebiasaan algoritma Boyer-Moore tergantung pada ukuran alfabet dan pengulangan


dalam string. Dalam studi empiris menggunakan teks bahasa alami dan m<5, algoritma hanya
melakukan perbandingan sekitar 0,24 hingga 0,3 karakter per karakter dalam teks (hingga titik
kecocokan atau akhir teks). Dengan kata lain, itu hanya memeriksa sekitar seperempat hingga
sepertiga dari karakter.

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.

6.2 Multiplikasi Matriks dan Pohon Pencarian Biner Optimal

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

((AB)C)D 30×1×40 + 30×40×10 + 30×10×25 = 20,700

A(B(CD)) 40×10×25 + 1×40×25 + 30×1×25 = 11,750


(AB)(CD) 30×1×40 + 40×10×25 + 30×40×25 = 41,200

Misalkan kita diberi matriks A1 , A2 , . . . , An, dimana dimensi A adalah di-1 × d1. Bagaimana kita
seharusnya menghitung

A1 × A2 × . . . × An

Alogaritma 6.1 faktor urutan matriks

input : array d berisi dimensi matriks; n adalah jumlah yang dihitung

output : factor table yang berisi faktorisasi terbaik untuk setiap urutan matriks: perkalian, jumlah
perkalian yang dilakukan oleh faktorisasi seluruh urutan

6.2.2 membangun pohon pencarian biner optimal

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.

6.3 perkiraan pencocokan string

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

6.4 jarak dalam grafik dan digraph

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:

p ( x ) =( … ( ( an x+ an−1 ) x+ an−2 ) x+ …+a1 ) x +a 0

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

7.2.3 Preprocessing of Koefisien


Preprocessing (juga disebut preconditioning) beberapa data dalam suatu masalah berarti, secara
informal, bahwa beberapa input diketahui sebelumnya dan bahwa program khusus dapat ditulis.
Misalkan suatu masalah memiliki input/dan I’ dan bahwa kita menunjukkan suatu algoritma
untuk masalah tersebut oleh A, dengan input I” yang menghasilkan output yang sama seperti A
dengan menemukan suatu algoritma A, dengan input I” yang menghasilkan output yang sama A
dengan input I dan I’.
7.3 Penggandaan Vektor dan Matriks
7.3.1 Tinjauan Algoritma Standar
Kami mulai dengan meninjau metode terkenal untuk mengalikan matriks dan vector, mencatat
jumlah operasi yang dilakukan oleh metode ini, dan memberikan batas bawah yang diketahui
untuk jumlah perkalian dan pembagian (*/ ‘s). sepanjang bagian ini kami menggunakan huruf
kapital untuk nama vector dan matriks dan huruf kecil yang sesuai untuk komponennya.
7.3.2 Penggandaan Matriks Winograd
Misalkan produk titik V = ( v 1 , v 2 , v 3 , v 4 ) dan W =( w 1, w 2 , w 3 , w 4) adalah dihitung dengan
rumus berikut:
V .W =( v 1+w 2 )( v 2+w 1 ) + ( v 3+ w 4 ) ( v 4+ w 3 )−v 1 v 2−v 3 v 4−w 1 w 2−w 3 w 4
Perhatikan bahwa empat perkalian hanya melibatkan komponen V atau komponen W.
7.3.3 Batas Bahwa untuk Perkalian Matriks
Algoritma Winograd menunjukkan bahwa matriks mxn dan nxq dapat dikalikan menggunakan
lebih sedikit dari perkalian mng. Berapa banyak yang dibutuhkan apakah θ(mng) atau ini
dapatkah istilah kubik dihilangkan? Batas bawah paling terkenal sangat rendah
7.3.4 Multiplikasi Matriks Strassen
Untuk sisa bagian ini kami mengasumsikan bahwa matriks akan dikalikan nxn matriks kuadrat,
A dan B. kunci untuk algoritma Strassen adalah metode untuk mengalikan matriks 2x2
menggunakan tujuh perkalian, bukan delapan biasa. Algoritma grad lulusan juga menggunakan
delapan. Untuk n=2 , pertama hitung jumlah berikut, yang masing-masing membutuhkan tepat
satu perkalian

x 1=( a 11 +a22 )∗(b 11 +b22 )


x 2=( a 21+ a22)∗b11

x 3=¿

x 4 =¿

x 5=( a11 +a12 )∗b22

x 6=( a21 −a11 )∗(b11 + b12)

x 7=( a12−a22 )∗(b 21 +b 22)

7.4 Transformasi dan Konvolusi Fourier Cepat


7.4.1 Pendahuluan
Biarkan U dan V menjadi n-vektor dengan komponen diindeks dari 0 hingga n-1. Konvolusi U
dan V, dilambangkan dengan U&V, menurut defenisi vector-n. dengan komponen xXEON-y
dimana I’s-1 dan indeks disisi kanan diambil modulo n.

BAB 8

8.1 Penutupan Transitif dari Hubungan Biner


8.1.1 Definisi dan Latar Belakang
Saya seandainya, As
Misalkan S adalah himpunan berhingga dengan elemen dalam ons adalah subst, katakanlah 4.
dari SxS: Iris, A. kita katakan yang terkait dengan dan penggunaan notatin As, Relasi dapat
diwakili oleh matriks nxn dengan entri A relasi biner pada S ke d jika tidak.

8.1.2 Menemukan Matriks Keterjangkauan oleh Pencarian Kedalaman-pertama


Cara yang cukup jelas adalah dengan melakukan pencarian mendalam-pertama (lihat Bagian 4.4)
dari setiap titik untuk menemukan semua e matriks untuk digraf G = (S.A). membangun R.
matriks reachability untuk simpul yang bisa es dapat dihubungi darinya Awalnya R akan menjadi
matriks nol. Visitmg.

8.2 Algoritma Warshall


8.2.1 Algoritma Warshall untuk Penutupan Transitif
menafsirkan relasi biner, penutupan transitif relasi. sesuai dengan memasukkan tepi pada set
terbatas Apakah digraf, kemudian menemukan elemensampai tidak ada entri R yang berubah
selama satu lulus penuh | Penutupan Transitif
8.2.2 Perpanjangan Algoritma Warshall
Bagi mereka yang telah membaca Bagian 6.4, algoritma Warshall harus terlihat familier. Di
sana kami menggunakan pendekatan pemrograman dinamis untuk memecahkan masalah berikut:
W (v; v) jika v, v; E E
Wij = jika i j dan v; , & E
Diberikan grafik berbobot atau digraf G = (V, E, W) dengan V = v. diwakili oleh matriks bobot
dengan entri jika saya = j, hitung matriks nxn D yang didefinisikan oleh d = jarak dari v, ke V ;.
Jarak adalah berat jalur berat minimum.) Itu solusi pemrograman dinamis untuk masalah semua-
pasangan jarak adalah Algoritma 8.3 (Algoritma 6.5) Jarak dalam Grafik atau Digraph
Input: W, matriks bobot untuk grafik atau digraf dengan simpul V, ..., V, dan n.
Output: D, sebuah matriks nxn sedemikian rupa sehingga d; = jarak dari v ke vj.

8.3 Menghitung Penutupan Transitif oleh Operasi Matrix


Misalkan A adalah matriks untuk hubungan biner pada S = {S ,. Sa dan kita menafsirkan A
sebagai hubungan kedekatan pada digraf (S, A). Kemudian a j = 1 jika dan hanya jika ada jalur
panjang satu dari s; untuk s; karena jalur panjang satu adalah tepi.

8.4 Mengalikan Bit Matriks Algoritma Kronrod


8.4.1 Pendahuluan
Misalkan A dan B adalah ical atau instruksi, produk mereka C = AB dapat dihitung sebagai
berikut, di mana B adalah baris ke-i dari baris C dan k ke-B. masing-masing, dan pada awalnya
semua entri adalah 0: # matriks Boolean disimpan dengan entri per bit. Menggunakan lo untuk
i: = 1 untuk melakukan untuk k: = 1 untuk n lakukan jika = 1 lalu = atau B, akhir ujung dan
ujung

8.4.2 Algoritma Kronr


Kelompok-kelompok tertentu dari baris bumi Ule mons untuk beberapa baris yang
berbeda, misalnya, anggaplah itu berjajar dalam baris. 1. 3, dan akan cukup. Bagaimana
beberapa atau semua pekerjaan yang digandakan dapat dikurangi? Pendekatan yang
menunjukkan sendiri adalah pertama menghitung banyak serikat dari sejumlah kecil pada
Gambar. 2. Kemudian BUBUB. adalah con dari produk dan serikat pekerja dilakukan di mana
lebih sedikitbaris B (seperti BUR B) dan kemudian menggabungkan serikat ini secara tepat
untuk mendapatkan baris produk. Beberapa pertanyaan langsung terlintas dalam pikiran: Berapa
banyak dan baris B mana yang harus digabungkan dalam langkah terbaik? Bagaimana serikat-
serikat ini dapat disimpan sehingga mereka dapat diakses secara efisien pada langkah kedua

8. 5.1 Hubungan Kesetaraan Dinamis


Relasi ekivalensi R pada himpunan terbatas S adalah relasi biner pada Simetris, dan
transitif. Yaitu, untuk semua s, 1. dan Rs jika sRi kasi dalam S adalah himpunan bagian S yang
berisi semua elemen yang setara dengan s. Kelas kesetaraan untuk partisi S, yaitu, mereka
terpisah dan penyatuan mereka adalah S. lalu ts; dan, jika sRI dan tRu, maka Ru.

8.5.2 Aplikasi Algoritma Pohon: Rentang Minimum Kruskal


Misalkan G = (V. E. W) menjadi grafik berbobot. Dalam Bagian 4.2 kami mempelajari
algoritma Prim / Dil untuk menemukan pohon spanning minimum untuk G. Algoritma dimulai
pada vertex trary dan kemudian bercabang darinya dengan "rakus memilih tepi dengan berat.
Kapan saja, tepi yang dipilih membentuk pohon Di sini kita menguji suatu algoritma yang
menggunakan strategi yang lebih rakus.

8.5.3 Beberapa Implementasi yang Jelas


Untuk membandingkan berbagai strategi implementasi, kami akan menghitung operasi dari
berbagai jenis yang dilakukan oleh setiap strategi untuk memproses urutan n MAKE dan / atau
instruksi IS. Kami mulai dengan memeriksa dua struktur data yang cukup jelas untuk mewakili
hubungan: matriks dan array.

8.5.4 Program Union-Find


Efek dari instruksi MAKE adalah untuk membentuk gabungan dari dua himpunan bagian dari S.
Sebuah IS dapat dijawab dengan mudah jika kita memiliki cara untuk mengetahui dari mana set
elemen yang diberikan adalah root / dan w W. Untuk membuatnya mudah untuk menerapkan
Temukan dan Menyatukan, tautan di anggota. Jadi kami mengalihkan perhatian kami ke Union
dan Find Operator dan struktur data tertentu di mana mereka dapat diimplementasikan untuk
kelas kesetaraan, atau subset, diwakili oleh pohon. Setiap root akan digunakan pohon. Instruksi
r = Findiu) menemukan dan menugaskan ke akar dari pelatihan con pohon v. Argumen Union
harus menjadi root: Union,) melampirkan pohon dengan titik pohon dari node cache ke induknya
(dengan pointer nol di root).
BAB 9
9. 1. 1 Beberapa Contoh Masalah Pada bab-bab
Secara alami sebagai masalah optimasi (mereka disebut Tiz optimisasi kombinatorial),
tetapi mereka juga dapat dirumuskan sebagai masalah keputusan, yaitu, probleme yang
outputnya adalah jawaban ya atau tidak yang sederhana untuk setiap input.
Pewarnaan Grafik
Pewarnaan grafik G = (V. E) adalah pemetaan C: VS, di mana S adalah himpunan
terbatas "warna"), sehingga jika kita E maka C (v) + C (w): di Dengan kata lain, simpul yang
berdekatan tidak diberi warna yang sama
Penjadwalan Pekerjaan dengan Denda
Misalkan bahwa n pekerjaan J. . . . . Jn harus dieksekusi satu per satu. Kita diberikan
waktu percobaan t. . . . . Dalam tenggat waktu di. . . . . dn (diukur dari waktu mulai untuk
pekerjaan pertama dieksekusi), dan denda karena melewatkan tenggat waktu Pi. . . . . PR.
Asumsikan bahwa waktu eksekusi, tenggat waktu, dan penalti semuanya bilangan bulat positif.
Jadwal untuk pekerjaan adalah permutasi dari {1, 2,. . . , n), di mana J. (1) adalah pekerjaan
yang dilakukan terlebih dahulu, J - 2) adalah pekerjaan yang dilakukan selanjutnya, dan
sebagainya
Bilangan bulat k.
Bilangan bulat k adalah Bin Packing kami memiliki jumlah sampah yang tidak terbatas
masing-masing berkapasitas 1, dan n objek dengan ukuran S1. . . . . Sn. Di mana 0 <s, si.
Masalah pengoptimalan: Tentukan jumlah terkecil dari tempat sampah di mana objek dapat
dikemas (dan temukan pengemasan yang optimal).
Hamilton patha Jamilton Paths dan Hamilton Circuits
Milton path (sirkuit Hamilton, atau siklus) dalam grafik atau digraf adalah jalur (siklus) yang
menembus setiap titik tepat sekali. (Sirkuit adalah istilah lain untuk siklus, dan siklus Hamilton
paling sering disebut sirkuit Hamilton.) Masalah keputusan: Apakah grafik atau digraf yang
diberikan memiliki jalur Hamilton (cir cuit)? Masalah optimasi terkait adalah masalah tur
minimum.
Minimum (Traveling Tenaga penjual Masalah)
Masalah Optimasi: Diberikan grafik berbobot, temukan sirkuit Hamilton berbobot minimum.
Masalah ini secara luas dikenal sebagai masalah pramuniaga keliling: pramuniaga ingin
meminimalkan total perjalanan saat mengunjungi semua kota dalam wilayah. Aplikasi lain
mengangkut truk perutean untuk pengambilan sampah dan pengiriman paket. Masalah
Keputusan: Diberikan grafik berbobot dan integer k, adakah sirkuit Ham ilton dengan total bobot
paling banyak k? Kegunaan dan kesederhanaan yang jelas dari masalah-masalah ini dapat
menggugah pembaca, yang diundang untuk mencoba merancang algoritma untuk beberapa dari
mereka sebelum melanjutkan.
9. 1. 2 Kelas P
Tidak ada satu pun dari algoritma yang dikenal untuk masalah yang baru saja dijelaskan
dijamin berjalan dalam jumlah waktu yang dapat. Kami tidak akan secara tegas mendefinisikan
"masuk akal," tetapi kami akan mendefinisikan kelas P masalah yang mencakup mereka dengan
ritme algo yang cukup efisien.
9.3 oximation Algorithms
Approximas Ratusan yang saya lakukan jika kita harus menyelesaikan perbedaan yang
signifikan seperti biasa. untuk mengembangkan pengantin masalah aplikasi penting adalah NP -
lengkap. Apa yang bisa kita ct memecahkan salah satu masalah ini? Ada beberapa pendekatan
yang mungkin. walaupun tidak ada algoritma yang dibatasi polinomial yang dapat ditemukan
pada perbedaan dalam kompleksitas algoritma yang dikenal: kita dapat mencoba
mengembangkan yang paling efisien.

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

Bukankah sulit untuk menemukan cara-cara untuk mempercepat beberapa algoritma


penggarapan yang kita pelajari Dalam bab 2 dengan melakukan beberapa operasi secara paralel.
Pembaca harus bisa N Sind o-waktu ations of. Contohnya, penyisipan dan Mergesort (untuk
menyortir n keys). Dalam bagian ini kita akan menyajikan alpo soning paralel Rihm berdasarkan
Mergesort yang kira-kira lgn2 PRAM eps menggunakan # poces Gunting. Algoritma yang
disajikan di sini memberikan perbaikan dramatis selama satu LGN).Seleksi berurutan.
Contohnya, sebuah daftar berisi 1000 kunci bisa dipotong dalam 55 ribu aksara.Langkah -
langkah; Algoritma sequential tidak tentang to00 pompurisons. Sekarang fasiest Algoritma
penyortiran paralel yang dikenal; Penyortiran paralel dapat dilakukan di Olgei waktu How
Algoritma yang kami uraikan sangat mudah untuk dipahami, ia menggunakan beberapa tes

10.3.2 Penggabungan Paralel


Seperti terlihat pada uji coba 2, 16, kami mengelola nerpe dua Omparisons terjadi lagi yang kami
temukan LAlgorin 2 di sana.

10.4.1 Strategi dan Teknologi


Biarkan G- (v) menjadi Sederhana, biarkan V (1, 2. Komponen G. yang terhubung
digunakan pencarian dalam-dulu dan berlari di muain, m) .Waktunya habis. Meskipun pencarian
depan-pertama mungkin tampak berurutan, kemudian telah.Kemajuan terbaru dalam
mengembangkan algoritma paralel cepat untuk membangun seanch kedalaman.Sebuah grafik
(tanpa petunjuk) dengan Vn andE-m untuk menghilangkan utasi Nl.Namun, tidak perlu
melakukan pencarian mendalam pertama untuk menemukan cm terhubung Ponents. Dalam
bagian ini kami menyajikan algoritma paralel yang menemukan com terhubung Memperkirakan
waktunya menggunakan maks (2n, 2m).
10.5.2 Tingkat Rendah dari komputasi A.
Fungsi Pada bit n Fungsi Encode yang didefinisikan dalam bagian 10.5.1 adalah yang
paling sulit untuk menghitung fungsi Sedikit. Artinya, tidak ada fungsi lain dapat membutuhkan
waktu untuk urutan yang lebih tinggi karena, sekali semua Bagian masukan telah dikodekan
menjadi satu integer, setiap fungsi lain dapat dihitung Oleh satu prosesor dalam satu langkah
setelah membaca encoding.

Anda mungkin juga menyukai