Space-tme radeof adalah cara
Space-tme radeof adalah cara unuk menyelesaikan suau masalah aau kalkulasi dengan wakuunuk menyelesaikan suau masalah aau kalkulasi dengan waku yang lebih cepa eapi menggunakan lebih banyak memori(sorage space) aau waku yang lebih yang lebih cepa eapi menggunakan lebih banyak memori(sorage space) aau waku yang lebih lama eapi menggukanan sediki
lama eapi menggukanan sediki memori(sormemori(sorage space).age space). Esiensi waku dan esiensi memori adalah dua
Esiensi waku dan esiensi memori adalah dua hal yang berlawanan. Semakin sediki waku yanghal yang berlawanan. Semakin sediki waku yang dibuuhkan maka akan semakin banyak memori yang dibuuhkan, begiu pula
dibuuhkan maka akan semakin banyak memori yang dibuuhkan, begiu pula sebaliknysebaliknya semakina semakin banyak waku yang dibuuhkan maka semakin banyak pula memori yang dibuuhkan.
banyak waku yang dibuuhkan maka semakin banyak pula memori yang dibuuhkan.
Sortng by ountng Sortng by ountng Counting Sort
Counting Sort adalah algoritma pengurutan efektif dan adalah algoritma pengurutan efektif dan efisien yang melakukan pengurutan dengan ide dasarefisien yang melakukan pengurutan dengan ide dasar
meletakkan elemen pada posisi yang
meletakkan elemen pada posisi yang benar, dimana penghitungan posisi yang benar dilakukan dengan carabenar, dimana penghitungan posisi yang benar dilakukan dengan cara
menghitung (counting) elemen-elemen dengan nilai lebih kecil atau
menghitung (counting) elemen-elemen dengan nilai lebih kecil atau sama dengan elemen tersebut. Contohsama dengan elemen tersebut. Contoh
sederhana saja jika terdapat 12 elemen yang lebih kecil daripada x, maka x
sederhana saja jika terdapat 12 elemen yang lebih kecil daripada x, maka x akan mendapatkan posisinya diakan mendapatkan posisinya di
posisi 1.
posisi 1.
Keungggulan Algoritma
Keungggulan AlgoritmaCounting SortCounting Sort
!eunggulan dari algoritma counting sort adalah dapat
!eunggulan dari algoritma counting sort adalah dapat mengurutkan dengan "aktu yang lebih singkat, karenamengurutkan dengan "aktu yang lebih singkat, karena
tidak membandingkan dengan elemen lain.
tidak membandingkan dengan elemen lain.
Kelemahan Algoritma
Kelemahan AlgoritmaCounting SortCounting Sort
!elemahan algoritma counting sort adalah menggunakan array yang terlalu banyak.
!elemahan algoritma counting sort adalah menggunakan array yang terlalu banyak.
#ource code
#ource code
// C Program for counting sort // C Program for counting sort #include <stdio.h> #include <stdio.h> #include <string.h> #include <string.h> #define RANGE 255 #define RANGE 255
//ungsi main !ang diurut"an dieri"an string arr$% dengan urutan al&haet //ungsi main !ang diurut"an dieri"an string arr$% dengan urutan al&haet 'oid count(ort)char arr$%*
'oid count(ort)char arr$%* +
+
//
// ,he ,he out&ut out&ut character character arra! arra! that that -ill -ill ha'e ha'e sorted sorted arrarr char
char out&ut$strlout&ut$strlen)arr*%en)arr*%
//
// Create Create a a count count arra! arra! to to store store count count of of inidi'idulinidi'idul //
// characters characters and and initialie initialie count count arra! arra! as as 00 int
int count$RANGE count$RANGE 1 1 %3 %3 ii memset)count
memset)count3 3 03 03 sieof)countsieof)count****
//
for)i 4 0 arr$i% 11i*
11count$arr$i%%
// Change count$i% so that count$i% no- contains actual // &osition of this character in out&ut arra!
for )i 4 i <4 RANGE 11i* count$i% 14 count$i%
// 6uild the out&ut character arra! for )i 4 0 arr$i% 11i*
+
out&ut$count$arr$i%%% 4 arr$i%
count$arr$i%%
7
// Co&! the out&ut arra! to arr3 so that arr no-// contains sorted characters
for )i 4 0 arr$i% 11i* arr$i% 4 out&ut$i% 7
// 8ri'er &rogram to test ao'e function int main)*
+
char arr$% 4 9gee"sforgee"s9//9a&&le&&9
count(ort)arr*
&rintf)9(orted character arra! is :sn93 arr* return 0
!lowchar Sar
"araker diurukan sesuai nilai alphabe
#npu kaa geeks$orgeeks
%enyimpan nilai dari setap karaker
&upu kaa men'adi eeee$ggkkors
E
*ua coun array unuk menyimpan daa
Input Enhancement in String Matching:
Horspool’s and Boyer-Moore Algorithm
Pada bagian ini, kita melihat bagaimana teknik input enhancement dapat diterapkan pada masalah matching string. Ingat bahwa masalah pencocokan string memerlukan pencarian terjadinya string karakter m yang disebut pola dalam string karakter n yang lebih panjang yang disebut teks.
Karena jumlah maksimum uji coba tersebut adalah n - m + 1 dan, dalam kasus terburuk, perbandingan yang perlu dilakukan pada masing - masing, efisiensi kasus terburuk dari algoritma brute force adalah kelas !nm" . #ata-rata, bagaimanapun, kita harus mengharapkan hanya beberapa perbandingan sebelum pergeseran pola, dan untuk teks bahasa alami acak, efisiensi kasus rata-rata memang ternyata berada di !n + m".
$eberapa algoritma yang lebih cepat telah ditemukan. Kebanyakan dari mereka memanfaatkan gagasan peningkatan input% preprocess pola untuk mendapatkan beberapa informasi tentang hal itu, menyimpan informasi ini dalam sebuah tabel, dan kemudian menggunakan informasi ini selama pencarian pola yang sebenarnya dalam teks tertentu. Inilah ide di balik dua algoritma yang paling dikenal dari tipe ini% algoritma Knuth-&orris-Pratt 'Knu(() dan algoritma $oyer-&oore '$oy(().
Perbedaan utama antara kedua algoritma ini terletak pada cara mereka membandingkan karakter dari sebuah pola dengan rekan mereka dalam sebuah t eks% algoritma Knuth-&orris-Pratt melakukannya dari kiri ke kanan, sedangkan algoritma $oyer-&oore melakukannya dari kanan ke kiri. Karena gagasan terakhir mengarah ke algoritma yang lebih sederhana, inilah satu-satunya yang akan kita kejar di sini. !Perhatikan bahwa algoritma $oyer-&oore dimulai dengan menyelaraskan pola terhadap karakter awal teks* jika percobaan pertama gagal, itu menggeser pola ke kanan. Ini adalah perbandingan dalam percobaan yang dilakukan algoritma kanan ke kiri, mulai dengan karakter terakhir dalam pola."
&eskipun ide dasar algoritma $oyer-&oore sederhana, penerapan sebenarnya dalam metode kerja kurang begitu. leh karena itu, kita memulai diskusi kita dengan ersi sederhana dari algoritma $oyer-&oore yang disarankan oleh #. orspool 'or). /elain menjadi lebih sederhana, algoritma orspool tidak selalu kurang efisien dibandingkan algoritma $oyer-&oore pada string acak.
Horspool’s Algorithm
Pertimbangkan, sebagai contoh, mencari pola $0#$# dalam beberapa teks%
2imulai dengan # terakhir dari pola dan bergerak dari
kanan ke kiri, kita membandingkan pasangan karakter yang sesuai dalam pola dan teksnya. 3ika semua karakter pola cocok, substring yang cocok ditemukan. Kemudian pencarian bisa dihentikan sama sekali atau dilanjutkan jika terjadi kemunculan pola yang sama.
3ika terjadi ketidakcocokan, kita perlu menggeser pola ke kanan. 3elas, kami ingin melakukan perubahan besar mungkin tanpa mempertaruhkan kemungkinan kehilangan substring yang sesuai dalam teks. 0lgoritma orspool menentukan ukuran pergeseran seperti itu dengan melihat karakter c dari teks yang sesuai dengan karakter terakhir dari pola. Ini adalah kasus bahkan jika karakter c sendiri sesuai dengan mitranya dalam pola.
Boyer-Moore Algorithm
/ekarang kita garis bawahi algoritma $oyer-&oore itu sendiri. 3ika perbandingan pertama dari karakter paling kanan dalam pola dengan karakter c yang sesuai di dalam teks gagal, algoritma melakukan hal yang persis sama dengan algoritma orspool. 4akni, menggeser pola ke kanan dengan jumlah karakter yang diambil dari tabel precomputed seperti yang dijelaskan sebelumnya.
Kedua algoritma tersebut bertindak secara berbeda, namun setelah beberapa bilangan positif k ! 5k 5m" dari karakter pola dicocokkan dengan sukses sebelum terjadi ketidaksesuaian%
2alam situasi ini, algoritma $oyer-&oore menentukan ukuran pergeseran dengan mempertimbangkan dua kuantitas. 4ang pertama dipandu oleh karakter teks c yang menyebabkan ketidakcocokan dengan mitranya dalam pola. 2engan demikian, ini disebut pergeseran simbol buruk. 0lasan di balik pergeseran ini adalah alasan yang kami gunakan dalam algoritma orspool. 3ika c tidak sesuai dengan pola, kita ubah pola untuk hanya melewatkan huruf c ini di teks. 2engan mudah, ukuran pergeseran ini dapat dihitung dengan rumus t1 !c" - k dimana t1 !c" adalah entri pada tabel precomputed yang digunakan oleh algoritma orspool !lihat di atas" dan k adalah jumlah karakter yang cocok%
B Tree
$ 6 tree adalah sebuah tree yang dapat menyimpan data secara berurutan dan memungkinkan untuk pencarian, akses sekuensial, penambahan, serta penghapusan dalam waktu yang relatif singkat. $ 6 tree adalah generalisasi dari binary search tree, di mana setiap node dapat memiliki lebih dari 7 chlidren. 8idak seperti self – balancing binary search trees, $ 6 tree lebih dikhususkan untuk sistem yang membutuhkan pembacaan dan penulisan data dalam jumlah yang relatif besar 9 banyak. $ 6 tree biasadigunakan untuk database dan filesystem.
2alam $ 6 tree, internal nodes !non - leaf" dapat memiliki ariabel jumlah node anak dalam batas yang sudah ditentukan. Ketika sebuah data ditambahkan atau dihapus dari sebuah node, jumlah node anak dari tree tersebut berubah. 2engan tujuan untuk mempertahankan batas yang sudah ditentukan tersebut, internal nodes dapat bergabung atau berpisah. Karena berbagai batas dari node 6 node anak diijinkan, maka $ 6 tree tidak perlu menyeimbangkan diri sesering mungkin layaknya self – balancing search trees,tetapi hal semacam ini akan membuang 6 buang tempat yang ada, karena setiap node yang ada tidak terisi semua. $atas bawah dan batas atas pada jumlah node anak biasanya tetap untuk implementasi tertentu. /ebagai contoh, pada 7 6 : tree, setiap internal node hanya dapat memiliki 7 atau : node 6 node anak.
3umlah cabang !anak node" dari sebuah node akan satu lebih banyak dari jumlah kunci yang tersimpan dalam node. 2alam sebuah 7-: $ 6 tree, node internal akan menyimpan baik satu kunci !dengan 7 buah node anak" atau dua kunci !dengan tiga node anak". /ebuah $- tree kadang 6 kadang digambarkan dengan parameter (d + 1) – (2d + 1) atau yang lebih mudah dengan urutan cabang tertinggi, (2d + 1).
/ebuah $ 6 tree akan tetap seimbang dengan syarat semua node 6 node daun !node terluar" berada dalam kedalaman yang sama. Kedalaman ini akan bertambah secara perlahan 6 lahan sebagai satu syarat yang ditambahkan pada sebuah tree, tetapi pertambahan pada keseluruhan kedalaman jarang terjadi, dan sebagai hasilnya pada semua node - node daun menjadi satu node lebih jauh dari root 6 nya.
$ 6 tree memiliki keuntungan substansial atas implementasi alternatif ketika waktu untuk mengakses sebuah node menjadi jauh melebihi waktu akses antara sesama node. al ini biasanya terjadi ketika node 6 node tersebut berada pada penyimpanan sekunder seperti diks dries. 2engan memaksimalkan jumlah dari anak 6 anak node dari setiap node
6 node internal, ketinggian tree tersebut akan berkurang dan jumlah akses node yang mahal !lama" akan berkurang.
Searching
/earching dalam $ 6 tree mirip dengan searching dalam binary search tree. 2imulai dari root, tree akan dilaluli secara rekursif dari atas sampai bawah !root sampai node terluar". 2alam setiap leel, search memilih sebuah child pointer !subtree" yang memisahkan nilai 6 nilai pada kedua sisi dari nilai pencarian.
Binary search biasanya !tapi tidak selalu" digunakan dalam setiap node untuk menemukan nilai 6 nilai pemisahan dan nilai penting dari child tree.
nsertion
/etiap penambahan dimulai dari sebuah node daun !node terluar". ;ntuk menambahkan sebuah elemen !data" baru.
Pencarian dilakukan pada tree untuk menemukan node terluar di mana elemen baru !data" harus ditambahkan. 8ambahkan data baru tersebut ke dalam node dengan langkah 6 langkah berikut %
1. 3ika node berisi lebih sedikit dari jumlah elemen !data" maksimum yang sudah ditentukan, maka terdapat ruangan untuk elemen yang baru !data baru". 8ambahkan elemen baru tersebut ke dalam node, jaga data 6 data dalam node tetap teratur.
7. 3ika node 6 node sudah penuh, sehingga terbagi rata menjadi 7 node,
/ebuah median tunggal dipilih dari antara unsur 6 unsur daun dan
elemen baru.
<ilai yang kurang dari median diletakkan pada node baru sebelah
kiri dan nilai yang lebih dari median diletakkan pada node baru sebelah kanan, dengan median bertindak sebagai nilai pemisah.
8ambahkan nilai pemisah pada node parent, yang akan
node tidak memiliki parent !yaitu jika node adalah root", buat root baru di atas node tersebut !menambahkan tinggi dari tree tersebut".
!eletion
0da 7 cara mengenai penghapusan dari sebuah $ 6 tree,
8emukan dan hapus data itu, kemudian atur ulang tree untuk mengembalikan
keseimbangannya atau
=akukan single pass pada tree tersebut, tetapi sebelum masuk pada sebuah node,
atur ulang tree sehingga setelah data yang akan dihapus ditemukan. 2ata tersebut dapat dihapus tanpa memicu terjadinya atur ulang kembali.
pen ashing and >losed ashing
Penggunaan "tertutup" vs. "terbuka" mencerminkan dengan atau tidaknya kita menggunakan posisi atau struktur data tertentu.
Misalnya, "terbuka" dalam "pengalamatan terbuka" memberi tahu kita indeks (alias alamat) di mana objek akan disimpan dalam tabel hash tidak sepenuhnya ditentukan oleh kode hashnya. Sebaliknya, indeks dapat bervariasi tergantung pada apa yang sudah ada dalam tabel hash.
The "closed" dalam "closed hashing" mengacu pada akta bah!a kita tidak pernah meninggalkan tabel hash setiap objek disimpan secara langsung pada sebuah indeks dalam array internal tabel hash. Perhatikan bah!a ini hanya mungkin dengan
menggunakan semacam strategi pengalamatan terbuka. #ni menjelaskan mengapa "closed hashing" dan "open addressing" adalah sinonim.
$andingkan ini dengan open hashing % dalam strategi ini, tidak ada objek yang benar% benar tersimpan dalam array tabel hash Sebagai gantinya, satu objek adalah hashed, disimpan dalam datar yang terpisah dari array internal tabel hash. "terbuka" mengacu pada kebebasan yang kita dapatkan dengan meninggalkan tabel hash, dan
menggunakan datar terpisah. &mong%omong, "datar terpisah" mengisyaratkan mengapa hashing terbuka juga dikenal sebagai "chaining terpisah".
Singkatnya, "tertutup" selalu mengacu pada semacam jaminan ketat, seperti saat kita menjamin bah!a benda selalu tersimpan langsung di dalam tabel hash (closed hashing). 'emudian, kebalikan dari "closed" adalah "open", jadi jika nda tidak memiliki jaminan seperti itu, strategi tersebut dianggap "terbuka".
http%99www.brainkart.com9article9Input-nhancement-in-/tring-&atching--orspool---s-and-$oyer-&oore-0lgorithm?:9