OLEH :
TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS DAYANU IKHSANUDDIN
BAUBAU
2017
1
KASUS I
Algoritme graf
1. Algoritme Bellman-Ford
Menghitung jarak terpendek pada graf berbobot, di mana sisi bisa memiliki bobot negatif.
2. Algoritme Dijkstra
Menghitung jarak terpendek pada graf berbobot, tanpa sisi berbobot negatif.
3. Algoritme Floyd-Warshall
Menghitung solusi jarak terpendek untuk semua pasang titik pada sebuah graf berarah dan
berbobot.
4. Algoritme Kruskal
Algoritma Kruskal adalah algoritma untuk mencari pohon merentang minimum secara
langsung didasarkan pada algoritma MST (Minimum Spanning Tree) umum.
5. Algoritme Prim
Sebuah algoritma dalam teori graf untuk mencari pohon rentang minimum untuk sebuah
graf berbobot yang saling terhubung.
6. Algoritme Boruvka
Sebuah algoritma dalam teori graf untuk mencari pohon rentang minimum untuk sebuah
graf berbobot yang saling terhubungsebuah algoritma dalam teori graf untuk mencari pohon
rentang minimum untuk sebuah graf berbobot yang saling terhubung.
7. Algoritme Ford-Fulkerson
Menghitung aliran maksimal di dalam graf.
8. Algoritme Edmonds-Karp
Implementasi dari Ford-Fulkerson.
2
10. Algoritme Hungaria
Algoritme optimasi kombinatorial yang menyelesaikan masalah berdasarkan pembagian
kerja dalam waktu polinomial. Algoritme ini mudah dimengerti dan diterapkan untuk
menyelesaikan soal yang berupa penugasan dengan cara menemukan pemasangan sempurna
.Algoritme pencarian
19. PencarianPrediktif
Pencarian mirip biner dengan faktor pada magnitudo dari syarat pencarian terhadap nilai
atas dan bawah dalam pencarian. Kadang-kadang disebut pencarian kamus atau pencarian
interpolasi.
3
20. Tabel Hash
Mencari sebuah item dalam sebuah kumpulan tak berurut dalam waktu O(1).
Algoritme string
4
Approximate matching
Algoritme penyusunan
29. Bogosort
Dalam ilmu komputer, bogosort adalah fungsi pemilahan yang sangat tidak efektif
berdasarkan paradigma menghasilkan dan menguji. Fungsi tersebut menghasilkan permutasi
dari inputnya sampai menemukan satu yang diurutkan.
31. ProxmapSort
Atau sering disebut Proxmap sort, adalah algoritma pengurutan yang bekerja dengan
mempartisi kumpulan item data, atau kunci, ke dalam sejumlah "subarrays" (disebut ember,
dalam bentuk yang serupa). Nama pendek untuk menghitung "peta kedekatan", yang
mengindikasikan setiap kunci K awal subarray di mana K akan berada dalam urutan akhir
yang diurutkan. Tombol ditempatkan ke setiap subarray dengan menggunakan sort
penyisipan.
5
macam shuffle, atau jenis pesawat ulang-alik, adalah Variasi bubble sort yaitu algoritma
sorting yang stabil dan jenis perbandingan. Algoritma ini berbeda dari jenis bubble yang ada
di kedua arah pada masing-masing melewati daftar.
35. Heapsort
Dalam ilmu komputer, heapsort adalah algoritma sortasi berbasis perbandingan. Heapsort
dapat dianggap sebagai jenis seleksi yang disempurnakan seperti algoritma itu, ia membagi
inputnya menjadi wilayah yang diurutkan dan tidak tersortir, dan secara iteratif mengecilkan
daerah yang tidak disortir dengan mengekstraksi elemen terbesar dan memindahkannya ke
wilayah yang diurutkan. Perbaikan terdiri dari penggunaan struktur data tumpukan daripada
pencarian linier untuk menemukan yang maksimal.
6
Penyortiran Pigeonhole adalah algoritma pengurutan yang sesuai untuk menyortir daftar
elemen dimana jumlah elemen (n) dan anjang kisaran nilai kunci yang mungkin (N) kira-
kira sama.Hal ini membutuhkan waktu O (n + N). Hal ini mirip dengan penghitungan,
namun berbeda dalam hal itu "memindahkan item dua kali: sekali ke array ember dan lagi
ke tujuan akhirmenghitung semacam membangun array tambahan kemudian menggunakan
array untuk menghitung tujuan akhir masing-masing item dan memindahkan item di sana.
40. Quicksort
Quicksort merupakan sorting pembanding dan pada implementasi efisien tidak merupakan
algoritma sorting yang stabil.
44. Smoothsort
Dalam ilmu komputer, smoothsort adalah algoritma sortasi berbasis perbandingan. Sebuah
varian dari heapsort, ditemukan dan diterbitkan oleh Edsger Dijkstra pada tahun 1981.
Seperti heapsort, smoothsort adalah algoritma di tempat dengan batas atas O (n log n),
namun bukan jenis yang stabil.
7
46. Burrows-Wheeler transform
Preprocessing berguna untuk memperbaiki kompresi lossless.
47. DEFLATE
Kompresi data lossless.
50. LZW
Singkatan dari (Lempel-Ziv-Welch)
52. LZMA
Singkatan dari Lempel-Ziv-Markov chain-Algorithm
53. LZO
Pemadatan data yang cepat
8
Encoding biner terpotong adalah pengkodean entropi yang biasanya digunakan untuk
distribusi probabilitas seragam dengan alfabet yang terbatas.
9
Bentuk pengkodean entropi yang optimal untuk abjad mengikuti distribusi geometris.
Computational geometry
10
Grafik komputer
11
Algoritme Kriptografi
90. IDEA
IntelliJ IDEA (diucapkan / ɪntɛlɪdʒeɪ aɪdiə /) adalah lingkungan pengembangan terpadu Java
(IDE) untuk mengembangkan perangkat lunak komputer. Ini dikembangkan oleh JetBrains
(sebelumnya dikenal sebagai IntelliJ), dan tersedia sebagai edisi komunitas Licensed 2
Apache, [3] dan dalam edisi komersial eksklusif. Keduanya bisa digunakan untuk
pengembangan komersial
92. Enkripsi asimetris : dengan kunci publik atau tanda tangan digital:
DSA
ElGamal
RSA
Diffie-Hellman key exchange
NTRUEncrypt
93. MD5
Sekarang ini sudah terdapat algoritme yang mampu memalsukan jumlah MD5.
94. RIPEMD-160
RIPEMD (RACE Integrity Primitives Evaluation Message Digest) adalah keluarga fungsi
hash kriptografi yang dikembangkan di Leuven, Belgia, oleh Hans Dobbertin, Antoon
Bosselaers dan Bart Preneel di kelompok penelitian COSIC di Katholieke Universiteit
12
Leuven, dan pertama kali diterbitkan pada tahun 1996. RIPEMD adalah berdasarkan prinsip
desain yang digunakan di MD4, dan serupa dengan kinerja SHA-1 yang lebih populer.
95. SHA-1
Dalam kriptografi, SHA-1 (Secure Hash Algorithm 1) adalah fungsi hash kriptografi yang
dirancang oleh United States National Security Agency dan merupakan Standar Pengolahan
Informasi Federal A.S. yang diterbitkan oleh NIST Amerika Serikat. [3] SHA-1
menghasilkan nilai hash 160-bit (20-byte) yang dikenal sebagai message digest. Nilai hash
SHA-1 biasanya diberikan sebagai bilangan heksadesimal, panjangnya 40 digit.
96. HMAC
Otentikasi pesan kunci-hash
101. Snapshot algorithm: Sebuah snapshot adalah proses pencatatan keadaan global sebuah
sistem
102. Vector ordering: total pemesanan acara
Algoritme Numerik
13
Algoritma ini dirancang oleh carl r. De bood. Dalam matematika subfield dari analisis
nuimerik algoritma de boor ini adalah yang cepat dan stabil secara numerik algoritma untuk
mengevaluasi kurva spline di B-splie bentuk ini adalah generalisasi algoritma de castejau
untuk kurva beizer.
Optimization algorithms
14
cabang diperiksa terhadap batas perkiraan atas dan bawah pada solusi optimal, dan dibuang
jika tidak dapat menghasilkan solusi yang lebih baik daripada algoritma terbaik yang
ditemukan sejauh ini oleh algoritma.
Algoritma ini bergantung pada estimasi efisien batas bawah dan atas suatu wilayah / cabang
ruang pencarian dan mendekati penghitungan yang lengkap karena ukuran (volume n-
dimensi) dari wilayah tersebut cenderung nol
Nama dan inspirasi berasal dari anil dalam metalurgi, teknik yang melibatkan pemanasan
dan pendinginan bahan yang dikontrol untuk meningkatkan ukuran kristal dan mengurangi
cacatnya. Keduanya merupakan atribut material yang bergantung pada energi bebas
termodinamika. Pemanasan dan pendinginan material mempengaruhi suhu dan energi bebas
termodinamika. Simulasi anil sebagai pendekatan yang mengurangi minimisasi fungsi
sejumlah besar variabel ke mekanika statistik ekuilibrasi (anil) dari sistem multiatomali
buatan matematis yang setara (Jargon) pertama kali diformulasikan oleh Armen G.
Khachaturyan, Svetlana V. Semenovskaya, Boris K. Vainshtein pada tahun 1979 [1] dan
oleh Armen G. Khachaturyan, Svetlana V. Semenovskaya, Boris K. Vainshtein pada tahun
1981. [2] Penulis ini menggunakan simulasi komputer yang meniru anil dan pendinginan
sistem semacam itu untuk menemukan minimum globalnya.
15
solusi berkualitas tinggi untuk optimasi dan masalah pencarian dengan mengandalkan
operator terinspirasi bio seperti mutasi, crossover dan seleksi.
130. [[Goertzel algorithm]] Can be used for [[Persinyalan nada ganda multifrekuensi|DTMF]]
digit decoding.
Tidak ada metode umum yang efisien untuk menghitung logaritma diskrit pada komputer
konvensional. Beberapa algoritma penting dalam kriptografi kunci publik mendasarkan
keamanan mereka pada asumsi bahwa masalah logaritma diskrit atas kelompok yang dipilih
dengan cermat tidak memiliki solusi yang efisien.
17
displaystyle S_ {1}} S_ {1}, dan S 2 {\ displaystyle S_ {2}} S_ {2}. Jika x i {\ displaystyle
x_ {i}} x_ {i} ada di S 0 {\ displaystyle S_ {0}} S_ {0}, maka double kedua {\ displaystyle
a} a dan b {\ displaystyle b} b; jika xi ∈ S 1 {\ displaystyle x_ {i} \ in S_ {1}} x_ {i} \ in
S_ {1} maka pertambahan sebuah {\ displaystyle a} a, jika xi ∈ S 2 {\ displaystyle x_ {i } \
in S_ {2}} x_ {i} \ in S_ {2} maka kenaikan b {\ displaystyle b} b.
Algoritma ini ditemukan oleh Roland Silver, namun pertama kali diterbitkan oleh Stephen
Pohlig dan Martin Hellman (independen dari Silver).
139. Faktorisasi prima: pemecahan bilangan bulat menjadi faktor [[Bilangan prima|prima]].
140. Trial division
Divisi percobaan adalah yang paling sulit namun paling mudah untuk memahami algoritme
faktorisasi bilangan bulat. Gagasan penting di balik pengujian divisi percobaan untuk
melihat apakah bilangan bulat n, bilangan bulat yang akan diperhitungkan, dapat dibagi
dengan masing-masing nomor pada gilirannya yang kurang dari n. Sebagai contoh, untuk
bilangan bulat n = 12, satu-satunya bilangan yang membaginya adalah 1, 2, 3, 4, 6, 12.
Memilih hanya kekuatan bilangan prima terbesar dalam daftar ini memberikan 12 = 3 × 4.
18
Algoritma pollho Pollard adalah algoritma untuk faktorisasi bilangan bulat. Itu ditemukan
oleh John Pollard pada tahun 1975. [1] Ini hanya menggunakan sejumlah kecil ruang, dan
waktu yang diharapkan berjalan sebanding dengan akar kuadrat dari ukuran faktor utama
terkecil dari bilangan komposit yang menjadi faktor.
Keberadaan algoritma ini mengarah pada konsep bilangan prima yang aman, menjadi
bilangan prima dimana p - 1 dua kali merupakan prime prime Sophie Germain dan dengan
demikian sangat halus. Primes ini kadang-kadang ditafsirkan sebagai "aman untuk tujuan
kriptografi", namun mungkin tidak aman - dalam rekomendasi terkini untuk bilangan prima
kriptografi yang kuat (misalnya ANSI X9.31), perlu tetapi tidak cukup bahwa p - 1 memiliki
setidaknya satu bilangan prima besar faktor.
Bilangan prima yang cukup besar kuat; Jika bilangan prima yang digunakan untuk
keperluan kriptografi ternyata tidak kuat, kemungkinan besar akan mengalami kebencian
daripada melalui kecelakaan pada generasi bilangan acak. Terminologi ini dianggap usang
oleh industri kriptografi
Saringan medan nomor khusus efisien untuk bilangan bulat dari bentuk re ± s, di mana r dan
s kecil (misalnya nomor Mersenne).
19
Secara heuristik, kompleksitas untuk anjak bilangan bulat n {\ displaystyle n} n adalah
bentuknya: [1] dalam O dan L-notasi.
SNFS telah digunakan secara ekstensif oleh NFSNet (sebuah usaha komputasi terdistribusi
sukarela), NFS @ Home dan yang lainnya menghitung jumlah proyek Cunningham; untuk
beberapa waktu catatan untuk factorisation bilangan bulat telah diperhitungkan oleh SNFS
Numerical algebra
20
LALR (Look-ahead LR) parser
Canonical LR parser
Algoritme kuantum
166. Grover's algorithm: provides quadratic speedup for many search problems
167. Shor's algorithm: provides exponential speedup for factorizing a number
168. Deutsch-Jozsa algorithm: criterion of balance for Boolean function
KASUS II
21
Ilustrasi “memindahkan rumput/tanaman, dan kambing”
Ada seorang nelayan yang ingin memindahkan rumput – rumputan dan kambing ke pulau
sebelah,tetapi dia tidak ingin kambingnya di makan serigala dan rumput – rumputannya dimakan
kambingnya ketika ia sedang memindahkan rumput – rumputan dan kambingnya, serigala hanya
takut ketika bertemu dengan Si Nelayan. Bagaimana memindahkan rumput – rumputan dan
kambingnya ke pulau sebelah dengan aman?
Penyelesaian :
Dengan cara Si Nelayan tersebut membawa keduanya dalam satu perahu ke pulau sebelah, sehingga
serigala di pulau sebelah melihat Si Nelayan kabur dan dapat memindahkan rumput – rumputan dan
kambing dengan aman.
22
Keterangan :
3. Definisi Pseudo-code
Kode atau tanda yang menyerupai (pseudo) atau merupakan penjelasan cara menyelesaikan
suatu masalah. Pseudo-code sering digunakan oleh manusia untuk menuliskan algoritma.
Contoh kasus : mencari bilangan terbesar dari dua bilangan yang diinputkan
Solusi Pseudo-code :
1. Masukkan bilangan pertama
2. Masukkan bilangan kedua
3. Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4, jika tidak, kerjakan
langkah 5.
4. Tampilkan bilangan pertama
5. Tampilkan bilangan kedua
23
Solusi Algoritma :
1. Masukkan bilangan pertama (a)
2. Masukkan bilangan kedua (b)
3. if a > b then kerjakan langkah 4
4. print a
5. print b
Deskripsi:
Baca nama dan nilai mahasiswa
Jika nilai > = 60 maka
Keterangan = lulus
Tetapi jika salah
Keterangan = tidak lulus
Tulis nama dan keterangan.
24
5. Buatlah algoritma menggunakan flowchart dan pseudocode untuk
menentukan apakah bilangan yang di input adalah bilangan ganjil
atau bilangan genap.
Algoritma :
1. Masukkan sebuah bilangan
2. Bagi bilangan tersebut dengan bilangan atau angka 2
3. Jika bilangan menghasilkan sisa pembagian 0 maka genap
4. Jika bilangan tidak menghasilkan sisa pembagian 0 maka ganjil
Pseudocode :
Read Bilangan
If bil mod 2 = 0 then,
“Output Genap”
Else
“Output Ganjil”
End if
25
6. Buatlah algoritma menggunakan flowchart dan pseudocode untuk
menginput 3 buah bilangan, kemudian tentukan bilangan terbesar,
terkecil, dan rata-ratanya.
Algoritma :
a. Masukkan bilangan A,B,C
b. Jika A>B dan A>C maka A paling besar
c. Jika B>A dan B>C maka B paling besar
d. Maka C paling kecil/terkecil
* Jumlah = A+B+C
Rerata = Jumlah
Else
26
Print “C terkecil”
End if
* Jumlah = A+B+C
Rerata = Jumlah
3
Output rerata
27
Output M
Output H
28
1+2+3+...+n=n(n+1)2
Adalah benar untuk semua bilangan bulat n≥1. Untuk membuktikan pernyataan matematika di atas,
terlebih dahulu kita harus mengubah pernyataan matematika tersebut menjadi sebuah fungsi
matematika:
P(k)=1+2+3+...+n=k(k+1)2
dan kemudian membuktikan kebenarannya menggunakan induksi matematika. Seperti yang telah
dijelaskan sebelumnya, kita harus menjalankan dua langkah untuk melakukan pembuktian dengan
induksi:
P(1)=1111=1(1+1)2=1(2)2=22=1
karena hasil akhir dari ruas kanan dan ruas kiri adalah sama (1), maka dapat dikatakan
bahwa kasus dasar telah terbukti.
2. Induksi
Untuk pembuktian induksi, kita harus membuktikan bahwa P(k)→P(k+1) bernilai benar.
Langkah pertama yang dapat kita lakukan yaitu menuliskan fungsi matematis
dari P(k+1) terlebih dahulu:
P(k+1)=1+2+...+k+(k+1)=(k+1)((k+1)+1)2
dan kemudian kita harus membuktikan bahwa ruas kiri dan ruas kanan dari P(k+1) adalah
sama. Pembuktian akan kita lakukan dengan melakukan penurunan pada ruas kiri agar
menjadi sama dengan ruas kanan:
1+2+...+k+(k+1)=(1+2+...+k)+(k+1)=k(k+1)2+(k+1)=k(k+1)+2(k+1)2=k2+3k+22=(k+1)(k+
2)2=(k+1)((k+1)+2)2
dan seperti yang dapat dilihat, ruas kiri dari P(k+1) telah menjadi sama dengan ruas
kanannya, sehingga dapat dikatakan bahwa tahap induksi telah berhasil dibuktikan benar.
Dengan pembuktian kasus dasar dan induksi yang bernilai benar, kita dapat menyimpulkan
bahwa P(n) bernilai benar untuk n≥1.
P(1)=23−2=8−2=6
karena 6mod6=0 maka telah dapat dibuktikan bahwa kasus dasar bernilai benar.
2. Induksi
Jika P(k) benar habis dibagi 6, maka P(k+1), atau (k+1)3−(k+1) harus juga habis
dibagi 6. Mari kita lakukan pembuktiannya:
P(k+1)=(k+1)3−(k+1)=(k3+3k2+3k+1)−k−1=k3−3k2+2k=k3−3k2+2k+k−k
=k3−3k2+3k−k=k3−k+3k2+3k=(k3−k)+3k(k+1)
dan dapat dilihat bagaimana P(k+1) telah terbukti habis dibagi 6 karena:
10.Pseudocode yang ada sudah sangat jelas, dan baris per barisnya
dapat diimplementasikan secara langsung menggunakan bahasa
pemrograman apapun.
Setelah mendapatkan model penyelesaian masalah sampai pada pseudocode-nya, kita kemudian
dapat mengimplementasikan solusi yang dikembangkan menggunakan bahasa pemrograman yang
diinginkan. Berikut adalah contoh implementasi algoritma tersebut pada python:
b=15
T=0
p=input("Masukkan jumlah pinjaman: ")
t=input("Masukkan lama pinjaman: ")
T=int(p)
30
foriinrange(1,int(t)):
T=T+(15/100*T)
31