Dokumen tersebut membahas tentang analisis algoritma. Terdapat beberapa poin penting yaitu: (1) analisis algoritma digunakan untuk memperkirakan sumber daya yang dibutuhkan algoritma, (2) notasi Big-Oh digunakan untuk menggambarkan efisiensi algoritma, (3) beberapa contoh algoritma dan analisis kompleksitasnya seperti algoritma brute force untuk mencari dua titik terdekat yang berkompleksitas O(n^2).
Ringkasan dokumen tersebut adalah:
1. Dokumen tersebut membahas tentang jaringan syaraf tiruan dan cara kerjanya yang meniru otak manusia.
2. Jaringan syaraf tiruan terdiri atas neuron-neuron yang saling terhubung dan memiliki bobot untuk memproses informasi secara kolektif.
3. Ada beberapa metode pembelajaran jaringan syaraf tiruan seperti pembelajaran terawasi dan tak terawasi untuk menentukan bobot ant
Algoritma Brute Force adalah pendekatan yang sederhana dan langsung untuk memecahkan suatu masalah dengan cara mengevaluasi semua kemungkinan secara sistematis tanpa mempertimbangkan efisiensi. Contoh algoritma brute force adalah bubble sort, selection sort, dan evaluasi nilai polinom secara langsung.
Algoritma pemrograman perulangan dibahas dalam dokumen ini. Ada tiga jenis perulangan yang dijelaskan yaitu berdasarkan jumlah perulangan, kondisi berhenti, dan kondisi perulangan itu sendiri. Contoh algoritma perulangan dengan berbagai variasi kondisi dan jumlah perulangan juga diberikan beserta penjelasan programnya dalam bahasa C++.
Metode pencarian heuristik merupakan teknik untuk meningkatkan efisiensi proses pencarian dalam state space dengan memilih cabang-cabang yang paling mungkin menyebabkan penyelesaian masalah. Metode-metode pencarian heuristik yang dijelaskan meliputi generate and test, hill climbing, best first search, dan simulated annealing.
Dokumen tersebut membahas tentang Aljabar Boolean yang merupakan aljabar yang terdiri dari himpunan dengan dua operator biner yaitu infimum dan supremum. Aljabar Boolean memenuhi postulat-postulat Huntington seperti closure, identitas, komutatif, distributif, dan komplemen. Aljabar Boolean dua nilai {0,1} merupakan contoh aljabar Boolean.
Ringkasan dokumen tersebut adalah:
1. Dokumen tersebut membahas tentang jaringan syaraf tiruan dan cara kerjanya yang meniru otak manusia.
2. Jaringan syaraf tiruan terdiri atas neuron-neuron yang saling terhubung dan memiliki bobot untuk memproses informasi secara kolektif.
3. Ada beberapa metode pembelajaran jaringan syaraf tiruan seperti pembelajaran terawasi dan tak terawasi untuk menentukan bobot ant
Algoritma Brute Force adalah pendekatan yang sederhana dan langsung untuk memecahkan suatu masalah dengan cara mengevaluasi semua kemungkinan secara sistematis tanpa mempertimbangkan efisiensi. Contoh algoritma brute force adalah bubble sort, selection sort, dan evaluasi nilai polinom secara langsung.
Algoritma pemrograman perulangan dibahas dalam dokumen ini. Ada tiga jenis perulangan yang dijelaskan yaitu berdasarkan jumlah perulangan, kondisi berhenti, dan kondisi perulangan itu sendiri. Contoh algoritma perulangan dengan berbagai variasi kondisi dan jumlah perulangan juga diberikan beserta penjelasan programnya dalam bahasa C++.
Metode pencarian heuristik merupakan teknik untuk meningkatkan efisiensi proses pencarian dalam state space dengan memilih cabang-cabang yang paling mungkin menyebabkan penyelesaian masalah. Metode-metode pencarian heuristik yang dijelaskan meliputi generate and test, hill climbing, best first search, dan simulated annealing.
Dokumen tersebut membahas tentang Aljabar Boolean yang merupakan aljabar yang terdiri dari himpunan dengan dua operator biner yaitu infimum dan supremum. Aljabar Boolean memenuhi postulat-postulat Huntington seperti closure, identitas, komutatif, distributif, dan komplemen. Aljabar Boolean dua nilai {0,1} merupakan contoh aljabar Boolean.
Dokumen tersebut membahas tentang kode Huffman, yaitu algoritma kompresi data yang memberi kode terpendek untuk simbol yang sering muncul dan kode terpanjang untuk simbol yang jarang muncul. Kode tersebut dibuat berdasarkan pohon biner Huffman yang disusun berdasarkan frekuensi kemunculan simbol. Contoh penerapannya untuk kata "SCIENCE" dan "TELKOMSEL" juga dijelaskan.
Makalah ini membahas tentang struktur data stack dengan operasi push dan pop, pendeklarasian stack, skema traversal dan search pada stack, operasi dan fungsi dasar seperti create, isempty, push dan pop, deklarasi stack pada bahasa pemrograman, penggunaan stack, operasi logika pada stack, dan contoh aplikasi stack pada pemrograman pascal."
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAri Septiawan
Program menghitung tarif taksi berdasarkan jarak tempuh dengan menentukan tarif km pertama sebesar Rp. 2500 dan tarif km selanjutnya sebesar Rp. 1800. Jika jarak kurang dari 1 km, tarif tetap Rp. 2500.
Organisasi Komputer- representasi informasidaru2501
Dokumen tersebut membahas tentang representasi informasi dalam komputer, mulai dari definisi bit dan byte, jenis-jenis bilangan biner seperti bilangan bulat tak bertanda dan bertanda dengan menggunakan komplemen dua, serta konversi antara sistem bilangan biner, oktal, desimal, dan heksadesimal.
4.1 Operasi Dasar Singly Linked List 1 (primitive list)Kelinci Coklat
Dokumen tersebut membahas operasi dasar pada singly linked list meliputi penyisipan (insert), penghapusan (delete), penelusuran (traversal), dan pencarian (searching) elemen. Terdapat penjelasan algoritma dan fungsi untuk operasi insert first, insert last, delete first, delete last, serta traversal untuk menelusuri seluruh elemen list.
Menyederhanakan fungsi boolean dengan menggunakan metode quin1BAIDILAH Baidilah
Dokumen tersebut membahas tentang metode Quine-McCluskey untuk menyederhanakan fungsi Boolean. Metode ini lebih tepat digunakan untuk fungsi Boolean dengan jumlah variabel lebih dari empat karena metode aljabar dan peta Karnaugh sulit menyederhanakannya. Metode Quine-McCluskey melibatkan dua langkah yaitu menentukan prime implicant dan memilih prime implicant inti untuk mendapatkan hasil penyederhanaan.
1. Algoritma, Struktur Data dan Pemrograman TerstrukturKelinci Coklat
Dokumen tersebut membahas tentang algoritma, struktur data, dan pemrograman terstruktur menggunakan bahasa C++. Pokok bahasannya meliputi tipe data, algoritma, struktur data, penulisan program C++, pemilihan, pengulangan, dan pemrograman modular menggunakan fungsi.
Program tersebut menghitung jarak tempuh seseorang yang mengendarai sepeda motor dengan kecepatan yang terus bertambah 0,1 m/detik setiap detiknya. Program menggunakan loop untuk menghitung jarak tempuh selama 100 detik dengan menambahkan kecepatan saat ini ke total jarak setiap iterasi loop sambil menaikkan nilai kecepatan 0,1. Program ini akan mencetak total jarak tempuh selama 100 detik.
Relasi dan fungsi memberikan konsep penting dalam matematika untuk menghubungkan dua himpunan. Relasi adalah hubungan antara dua himpunan, sedangkan fungsi adalah relasi khusus dimana setiap elemen di himpunan asal dihubungkan dengan tepat satu elemen di himpunan hasil."
Dokumen tersebut membahas tentang struktur data tree secara umum dan binary tree secara khusus. Terdapat penjelasan tentang definisi istilah-istilah yang terkait dengan tree, contoh penerapan tree, representasi tree dalam program, serta cara melakukan traversal pada tree seperti preorder, postorder, dan inorder traversal.
Dokumen tersebut membahas tentang kode Huffman, yaitu algoritma kompresi data yang memberi kode terpendek untuk simbol yang sering muncul dan kode terpanjang untuk simbol yang jarang muncul. Kode tersebut dibuat berdasarkan pohon biner Huffman yang disusun berdasarkan frekuensi kemunculan simbol. Contoh penerapannya untuk kata "SCIENCE" dan "TELKOMSEL" juga dijelaskan.
Makalah ini membahas tentang struktur data stack dengan operasi push dan pop, pendeklarasian stack, skema traversal dan search pada stack, operasi dan fungsi dasar seperti create, isempty, push dan pop, deklarasi stack pada bahasa pemrograman, penggunaan stack, operasi logika pada stack, dan contoh aplikasi stack pada pemrograman pascal."
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAri Septiawan
Program menghitung tarif taksi berdasarkan jarak tempuh dengan menentukan tarif km pertama sebesar Rp. 2500 dan tarif km selanjutnya sebesar Rp. 1800. Jika jarak kurang dari 1 km, tarif tetap Rp. 2500.
Organisasi Komputer- representasi informasidaru2501
Dokumen tersebut membahas tentang representasi informasi dalam komputer, mulai dari definisi bit dan byte, jenis-jenis bilangan biner seperti bilangan bulat tak bertanda dan bertanda dengan menggunakan komplemen dua, serta konversi antara sistem bilangan biner, oktal, desimal, dan heksadesimal.
4.1 Operasi Dasar Singly Linked List 1 (primitive list)Kelinci Coklat
Dokumen tersebut membahas operasi dasar pada singly linked list meliputi penyisipan (insert), penghapusan (delete), penelusuran (traversal), dan pencarian (searching) elemen. Terdapat penjelasan algoritma dan fungsi untuk operasi insert first, insert last, delete first, delete last, serta traversal untuk menelusuri seluruh elemen list.
Menyederhanakan fungsi boolean dengan menggunakan metode quin1BAIDILAH Baidilah
Dokumen tersebut membahas tentang metode Quine-McCluskey untuk menyederhanakan fungsi Boolean. Metode ini lebih tepat digunakan untuk fungsi Boolean dengan jumlah variabel lebih dari empat karena metode aljabar dan peta Karnaugh sulit menyederhanakannya. Metode Quine-McCluskey melibatkan dua langkah yaitu menentukan prime implicant dan memilih prime implicant inti untuk mendapatkan hasil penyederhanaan.
1. Algoritma, Struktur Data dan Pemrograman TerstrukturKelinci Coklat
Dokumen tersebut membahas tentang algoritma, struktur data, dan pemrograman terstruktur menggunakan bahasa C++. Pokok bahasannya meliputi tipe data, algoritma, struktur data, penulisan program C++, pemilihan, pengulangan, dan pemrograman modular menggunakan fungsi.
Program tersebut menghitung jarak tempuh seseorang yang mengendarai sepeda motor dengan kecepatan yang terus bertambah 0,1 m/detik setiap detiknya. Program menggunakan loop untuk menghitung jarak tempuh selama 100 detik dengan menambahkan kecepatan saat ini ke total jarak setiap iterasi loop sambil menaikkan nilai kecepatan 0,1. Program ini akan mencetak total jarak tempuh selama 100 detik.
Relasi dan fungsi memberikan konsep penting dalam matematika untuk menghubungkan dua himpunan. Relasi adalah hubungan antara dua himpunan, sedangkan fungsi adalah relasi khusus dimana setiap elemen di himpunan asal dihubungkan dengan tepat satu elemen di himpunan hasil."
Dokumen tersebut membahas tentang struktur data tree secara umum dan binary tree secara khusus. Terdapat penjelasan tentang definisi istilah-istilah yang terkait dengan tree, contoh penerapan tree, representasi tree dalam program, serta cara melakukan traversal pada tree seperti preorder, postorder, dan inorder traversal.
Modul ini membahas tentang runtunan (urutan) instruksi dalam algoritma. Urutan instruksi penting karena menunjukkan urutan logika penyelesaian masalah. Urutan instruksi yang berbeda dapat menghasilkan keluaran yang sama atau berbeda tergantung masalahnya. Contohnya, program konversi detik ke jam-menit-detik dan program pertukaran nilai variabel.
Dokumen tersebut membahas tentang kompleksitas algoritma dan efisiensi algoritma. Kompleksitas algoritma diukur berdasarkan jumlah langkah yang dibutuhkan untuk menyelesaikan masalah, yang dapat diukur dalam waktu eksekusi atau ruang memori yang dibutuhkan. Notasi Big-O digunakan untuk mengelompokkan kompleksitas waktu algoritma berdasarkan orde pertumbuhannya sebagai fungsi dari ukuran masukan.
Materi 2 Kompleksitas Waktu dan Ruang (2).pdfAnandaPrasta
Dokumen tersebut membahas tentang kompleksitas waktu dan ruang dari suatu algoritma, di mana kompleksitas algoritma diukur berdasarkan jumlah waktu dan ruang memori yang dibutuhkan untuk menjalankannya. Kompleksitas waktu dan ruang bergantung pada ukuran masukan data, yang biasanya disimbolkan dengan n. Kompleksitas algoritma diekspresikan secara formal untuk membuatnya independen dari platform komputer dan bahasa pemrograman tertentu.
Line balancing merupakan proses menyeimbangkan lintasan produksi untuk mencapai target produksi dengan meminimalkan penumpukan barang dan mengidentifikasi stasiun kerja kritis. Hal ini dilakukan dengan menghitung waktu siklus, merangking operasi berdasarkan bobot posisi, membagikan elemen kerja ke stasiun, dan menghitung delay keseimbangan. Stasiun kerja 1 dan 5 diidentifikasi sebagai stasiun kritis yang perlu diperbaiki metode kerjanya.
Modul perkuliahan ini membahas pengantar tentang penelitian operasional dan rumusan program linear. Topik utama meliputi konsep dan fungsi penelitian operasional serta formulasi model matematis dari program linear untuk memecahkan masalah alokasi sumber daya secara optimal. Contoh soal diberikan untuk memproduksi dua jenis baut dengan memaksimalkan laba total dengan mempertimbangkan keterbatasan waktu di setiap work station.
Pemodelan long short term memory untuk prkiraan penjualan berdasar basis data penjualan retail pda kontrol persediaan
oleh : Chamiyanti Nurkentjana aju
Dokumen tersebut memberikan contoh soal latihan menghitung hasil kali beberapa bilangan yang diinputkan pengguna dengan pembatas angka 999. Program yang dibuat akan mengambil input bilangan dari pengguna satu per satu, mengkalikannya dengan hasil sebelumnya, hingga input berupa 999 sebagai pembatas. Hasil akhir akan menampilkan total perkalian bilangan-bilangan sebelum 999.
All of material inside is un-licence, kindly use it for educational only but please do not to commercialize it.
Based on 'ilman nafi'an, hopefully this file beneficially for you.
Thank you.
Cara Membuat Kursus Online Wordpress-tutorstarterFajar Baskoro
The document discusses setting up and customizing a WordPress website using the TutorLMS plugin to create an online learning platform. It covers topics like general settings, themes, customizing elements, adding courses, monetization through WooCommerce, and course settings. The goal is to guide users through configuring WordPress and TutorLMS to sell online courses.
Pemrograman Mobile - JetPack Compose1.pptxFajar Baskoro
JetPack Compose is a new Android UI toolkit that uses composable functions to declaratively build user interfaces. It allows user interfaces to recompose when data changes by detecting differences between previous and new UI descriptions. This recomposition improves performance over traditional frameworks by only updating parts of the UI that actually need changing.
Modul Ajar Bahasa Inggris Kelas 10 Fase E Kurikulum MerdekaFathan Emran
Modul Ajar Bahasa Inggris Kelas 10 SMA/MA Fase E Kurikulum Merdeka - abdiera.com. Modul Ajar Bahasa Inggris Kelas 10 SMA/MA Fase E Kurikulum Merdeka. Modul Ajar Bahasa Inggris Kelas 10 SMA/MA Fase E Kurikulum Merdeka.
Pendidikan inklusif merupakan sistem pendidikan yang
memberikan akses kepada semua peserta didik yang
memiliki kelainan, bakat istimewa,maupun potensi tertentu
untuk mengikuti pendidikan maupun pembelajaran dalam
satu lingkungan pendidikan yang sama dengan peserta didik
umumlainya
PPT RENCANA AKSI 2 modul ajar matematika berdiferensiasi kelas 1Arumdwikinasih
Pembelajaran berdiferensiasi merupakan pembelajaran yang mengakomodasi dari semua perbedaan murid, terbuka untuk semua dan memberikan kebutuhan-kebutuhan yang dibutuhkan oleh setiap individu.kelas 1 ........
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28 Juni 2024Kanaidi ken
Dlm wktu dekat, Pelatihan/WORKSHOP ”CSR/TJSL & Community Development (ISO 26000)” akn diselenggarakan di Swiss-BelHotel – BALI (26-28 Juni 2024)...
Dgn materi yg mupuni & Narasumber yg kompeten...akn banyak manfaat dan keuntungan yg didpt mengikuti Pelatihan menarik ini.
Boleh jga info ini👆 utk dishare_kan lgi kpda tmn2 lain/sanak keluarga yg sekiranya membutuhkan training tsb.
Smga Bermanfaat
Thanks Ken Kanaidi
Modul Ajar Matematika Kelas 11 Fase F Kurikulum MerdekaFathan Emran
Modul Ajar Matematika Kelas 11 SMA/MA Fase F Kurikulum Merdeka - abdiera.com. Modul Ajar Matematika Kelas 11 SMA/MA Fase F Kurikulum Merdeka. Modul Ajar Matematika Kelas 11 SMA/MA Fase F Kurikulum Merdeka. Modul Ajar Matematika Kelas 11 SMA/MA Fase F Kurikulum Merdeka. Modul Ajar Matematika Kelas 11 SMA/MA Fase F Kurikulum Merdeka.
Modul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Big O - Analisa Algoritma
1. Struktur Data & Algoritma
Suryana Setiawan, Ruli Manurung & Ade Azurat
(acknowledgments: Denny)
1
Fasilkom UI
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Pengenalan Analisa Algoritma
2. 2
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
al•go•rithm
n.
1 Math. a) any systematic method of solving a certain kind
of problem b) the repetitive calculations used in finding
the greatest common divisor of two numbers (called in
full Euclidean algorithm)
2 Comput. a predetermined set of instructions for solving
a specific problem in a limited number of steps
Suatu set instruksi yang harus diikuti oleh komputer
untuk memecahkan suatu masalah.
Program harus berhenti dalam batas waktu yang
wajar (reasonable)
Tidak terikat pada programming language atau
bahkan paradigma pemrograman (mis. Procedural
vs Object-Oriented)
Algoritma
3. 3
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: Motivasi
perlu diketahui berapa banyak resource (time
& space) yang diperlukan oleh sebuah
algoritma
Menggunakan teknik-teknik untuk mengurangi
waktu yang dibutuhkan oleh sebuah algoritma
4. 4
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Tujuan Pengajaran
Mahasiswa dapat memperkirakan waktu yang
dibutuhkan sebuah algoritma.
Mahasiswa memahami kerangka matematik
yang menggambarkan running time.
Mahasiswa mengenali beberapa teknik
sederhana yang dapat memperbaiki running
time.
Mahasiswa memahami bahwa suatu
permasalahan dapat diselesaikan dengan
beberapa algoritma dengan running time yang
berbeda-beda.
5. 5
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Outline
Apa itu analisa algoritma?- what
Bagaimana cara untuk analisa/mengukur? -
how
Notasi Big-Oh
Studi kasus: The Maximum Contiguous
Subsequence Sum Problem (Nilai jumlah
berurutan terbesar)
Algoritma 1: A cubic algorithm
Algoritma 2: A quadratic algorithm
Algoritma 3: An N log N algorithm
Algoritma 4: A linear algorithm
6. 6
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: What?
Mengukur jumlah sumber daya (time dan
space) yang diperlukan oleh sebuah algoritma
Waktu yang diperlukan (running time) oleh
sebuah algoritma cenderung tergantung pada
jumlah input yang diproses.
Running time dari sebuah algoritma adalah fungsi
dari jumlah inputnya
Selalu tidak terikat pada platform (mesin +
OS), bahasa pemrograman, kualitas
kompilator atau bahkan paradigma
pemrograman (mis. Procedural vs Object-
Oriented)
7. 7
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: How?
Bagaimana jika kita menggunakan jam?
Jumlah waktu yang digunakan bervariasi
tergantung pada beberapa faktor lain: kecepatan
mesin, sistem operasi (multi-tasking), kualitas
kompiler, dan bahasa pemrograman.
Sehingga kurang memberikan gambaran yang
tepat tentang algoritma
Wall-Clock time
CPU time
Process
1:
Process
2:
Process
3:
Idle:
Wall-Clock
time
8. 8
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: how?
Notasi O (sering disebut sebagai “notasi big-
Oh”)
Digunakan sebagai bahasa untuk membahas
efisiensi dari sebuah algoritma: log n, linier, n
log n, n2
, n3
, ...
Dari hasil run-time, dapat kita buat grafik dari
waktu eksekusi dan jumlah data.
9. 9
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Contoh: Mencari elemen terkecil dalam
sebuah array
Algoritma: sequential scan / linear search
Orde-nya: O(n) – linear
public static int smallest (int a[])
{ assert (length of array > 0);
int elemenTerkecil = a[0];
for (ii = 1; ii < a.length; ii++) {
if (a[ii] < elemenTerkecil) {
elemenTerkecil = a[ii];
}
}
return elemenTerkecil ;
}
Analisa Algoritma: How?
10. 10
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: How?
average case
input size
running
time
n
best case
worst case
11. 11
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Big Oh: contoh
Sebuah fungsi kubik adalah sebuah fungsi
yang suku dominannya (dominant term)
adalah sebuah konstan dikalikan dengan n3
.
Contoh:
10 n3
+ n2
+ 40 n + 80
n3
+ 1000 n2
+ 40 n + 80
n3
+ 10000
12. 12
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Dominant Term
Mengapa hanya suku yang memiliki pangkat
tertinggi/dominan saja yang diperhatikan?
Untuk n yang besar, suku dominan lebih
mengindikasikan perilaku dari algoritma.
Untuk n yang kecil, suku dominan tidak selalu
mengindikasikan perilakunya, tetapi program
dengan input kecil umumnya berjalan sangat
cepat sehingga kita tidak perlu perhatikan.
13. 13
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Big Oh: issues
Apakah fungsi linier selalu lebih kecil dari fungsi kubik?
Untuk n yang kecil, bisa saja fungsi linier > fungsi kubik
Tetapi untuk n yang besar, fungsi kubik > fungsi linier
Contoh:
• f(n) = 10 n3
+ 20 n + 10
• g(n) = 10000 n + 10000
• n = 10, f(n) = 10.210, g(n) = 110.000
f(n) < g(n)
• n = 100, f(n) = 10.002.010, g(n) = 1.010.000
f(n) > g(n)
Mengapa nilai konstan/koefesien pada setiap suku tidak
diperhatikan?
Nilai konstan/koefesien tidak berarti pada mesin yang
berbeda
∴ Big Oh digunakan untuk merepresentasikan laju
pertumbuhan (growth rate)
14. 14
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Orde Fungsi Running-Time
Function Name
c Constant
log N Logarithmic
log2
N Log-squared
N Linear
N log N N log N
N2
Quadratic
N3
Cubic
2N
Exponential
N! Factorial
15. 15
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Fungsi Running-Time
Untuk input yang sedikit, beberapa fungsi
lebih cepat dibandingkan dengan yang lain.
16. 16
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Fungsi Running-Time (2)
Untuk input yang besar, beberapa fungsi
running-time sangat lambat - tidak berguna.
17. 17
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Contoh Algoritma
Mencari dua titik yang memiliki jarak terpendek
dalam sebuah bidang (koordinat X-Y)
Masalah dalam komputer grafis.
Algoritma brute force:
•hitung jarak dari semua pasangan titik
•cari jarak yang terpendek
Jika jumlah titik adalah n, maka jumlah semua
pasangan adalah n * (n - 1) / 2
Orde-nya: O(n2
) - kuadratik
Ada solusi yang O(n log n) bahkan O(n) dengan
cara algoritma lain.
18. 18
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Contoh Algoritma
Tentukan apakah ada tiga titik dalam sebuah
bidang yang segaris (colinier).
Algoritma brute force:
• periksa semua tripel titik yang terdiri dari 3
titik.
Jumlah pasangan: n * (n - 1) * (n - 2) / 6
Orde-nya: O(n3
) - kubik. Sangat tidak berguna
untuk 10.000 titik.
Ada algoritma yang kuadratik.
19. 19
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Studi Kasus
Mengamati sebuah masalah dengan
beberapa solusi.
Masalah Maximum Contiguous Subsequence
Sum
Diberikan (angka integer negatif
dimungkinkan) A1, A2, …, AN, cari nilai
maksimum dari (Ai + Ai+1 + …+ Aj ).
maximum contiguous subsequence sum
adalah nol jika semua integer adalah negatif.
Contoh (maximum subsequences
digarisbawahi)
-2, 11, -4, 13, -4, 2
1, -3, 4, -2, -1, 6
20. 20
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Brute Force Algorithm (1)
Algoritma:
Hitung jumlah dari semua sub-sequence yang
mungkin
Cari nilai maksimumnya
Contoh:
jumlah subsequence (start, end)
• (0, 0), (0,1), (0,2), …, (0,5)
• (1,1), (1,2), …, (1, 5)
• …
• (5,5)
2
-4
13
-4
11
-2
5
4
3
2
1
0
21. 21
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Brute Force Algorithm (2)
public static int maxSubSum1( int [] A )
{
int maxSum = 0;
for(int ii = 0; ii < A.length; ii++) {
for( int jj = ii; jj < A.length; jj++)
{
int thisSum= 0;
for(int kk = ii; kk <= jj; kk++)
thisSum += A[kk];
if( thisSum > maxSum )
maxSum = thisSum;
}
}
return maxSum ;
}
2
-4
13
-4
11
-2
ii jj
22. 22
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa
Iterasi (kk) sebanyak N dalam iterasi (jj)
sebanyak N dalam iterasi (ii) sebanyak N
artinya: O(N3
), atau algoritma kubik.
Slight over-estimate yang dihasilkan dari
perhitungan iterasi yang kurang dari N adalah
tidak terlalu penting (kk <= jj).
23. 23
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Running Time yang sesungguhnya
Untuk N = 100, waktu sebenarnya adalah 0.47
detik pada sebuah komputer.
Dapat menggunakan informasi tersebut, untuk
memperkirakan waktu untuk input yang lebih
besar:
T(N) = cN 3
T(10N) = c(10N)3
= 1000cN 3
= 1000T(N)
Ukuran input meningkat dengan kelipatan 10 kali,
yang artinya meningkatkan running time dengan
kelipatan 1000 kali.
Untuk N = 1000, perkiraan waktu 470 detik.
(waktu sebenarnya 449 detik).
Untuk N = 10,000, perkiraan waktu 449000 detik
(6 hari).
24. 24
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Bagaimana memperbaikinya?
Membuang sebuah iterasi; Tidak selalu bisa.
Dalam contoh sebelumnya dimungkinkan: iterasi
paling dalam (kk) tidak diperlukan karena
informasi nya terbuang.
Nilai thisSum untuk nilai jj selanjutnya dapat
dengan mudah diperoleh dari nilai thisSum yang
sebelumnya:
Yang diperlukan: Aii + A ii+1 + … + A jj-1 + Ajj
Yang telah dihitung: Aii +A ii+1 + …+ A jj-1
Yang dibutuhkan adalah yang telah dihitung + Ajj
Dengan kata lain:
• sum (ii, jj) = sum (ii, jj - 1) + Ajj
25. 25
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
The Better Algorithm
public static int maxSubSum2( int [ ] A )
{
int maxSum = 0;
for( int ii = 0; ii < A.length; ii++ )
{
int thisSum = 0;
for( int jj = ii; jj < A.length; jj++ )
{
thisSum += A[jj];
if( thisSum > maxSum )
maxSum = thisSum;
}
}
return maxSum ;
}
26. 26
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa
Dengan logika yang sama: Saat ini running
time adalah quadratic, or O(N2
)
Perkirakan waktu eksekusi untuk input
berukuran ribuan. Algoritma ini masih dapat
digunakan untuk ukuran input 10 ribu.
Ingat, bahwa algoritma kubik sudah tidak
practical lagi bila digunakan untuk ukuran
input tersebut.
27. 27
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Actual running time
Untuk N = 100, waktu sebenarnya adalah 0.011
detik pada sebuah komputer.
Perkirakan waktu sebenarnya untuk input lebih
besar:
T(N) = cN 2
T(10N) = c(10N)2
= 100cN 2
= 100T(N)
Input diperbesar dengan kelipatan 10 artinya
running time akan membesar dengan kelipatan
100.
Untuk N = 1000, perkiraan running time adalah
1.11 detik. (waktu sebenarnya 1.12 detik).
Untuk N = 10,000, perkiraan 111 detik (= actual).
28. 28
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Algoritma Rekursif
Gunakan pendekatan divide-and-conquer :
Membagi (divide) permasalahan ke dalam
bagian yang lebih kecil
Menyelesaikan (conquer) masalah per bagian
secara recursive
Menggabung penyelesaian per bagian menjadi
solusi masalah awal
29. 29
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Algoritma Rekursif (2)
Urutan dengan nilai jumlah terbesar
kemungkinan berada pada:
terletak di setengah input awal
terletak di setengah input akhir.
berawal disetengan input awal dan berakhir di
setengah input akhir.
Hitung ketiga kemungkinan tersebut. Cari
yang lebih besar.
Kedua kemungkinan pertama dapat dengan
mudah dihitung secara rekursif.
30. 30
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Menghitung kemungkinan ketiga
dapat dilakukan dengan dua iterasi; lihat
program
kemungkinan ketika berasal dari penjumlahan
dua bagian, bagian pertama berawal pada
setengah bagian input pertama berakhir di
tengah. Bagian kedua berasal dari urutan
index setengah +1 hingga setengah bagian
input akhir.
Untuk bagian pertama gunakan iterasi dari
kanan-ke-kiri (right-to-left) mulai dari element
terakhir pada setengah input awal.
Untuk bagian kedua, gunakan iterasi dari kiri-
ke-kanan, (left-to-right) mulai dari awal
setengah input akhir.
32. 32
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Versi Rekursif
private int maxSumRec (int[] a, int left, int
right)
{
int center = (left + right) / 2;
if(left == right) { // Base case
return a[left] > 0 ? a[left] : 0;
}
int maxLeftSum = maxSumRec (a, left, center);
int maxRightSum = maxSumRec (a, center+1,
right);
for(int ii = center; ii >= left; ii--) {
leftBorderSum += a[ii];
if(leftBorderSum > maxLeftBorderSum)
maxLeftBorderSum = leftBorderSum;
}
...
33. 33
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Versi Rekursif (lanj.)
...
for(int jj = center + 1; jj <= right; jj++) {
rightBorderSum += a[jj];
if(rightBorderSum > maxRightBorderSum)
maxRightBorderSum = rightBorderSum;
}
return max3 (maxLeftSum, maxRightSum,
maxLeftBorderSum + maxRightBorderSum);
}
// publicly visible routine (a.k.a driver function)
public int maxSubSum (int [] a)
{
return maxSumRec (a, 0, a.length-1);
}
34. 34
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Detil Program
Pastikan dalam rekursif program anda ada
base case untuk mengatasi zero-element
arrays.
Gunakan method “driver” yang public
(method rekursif dibuat private)
Aturan Rekursif :
Memiliki base case
Membuat progress menuju ke base case
Asumsikan bahwa panggilan rekursif bekerja
dengan baik.
Hindari menghitung sebuah penyelesaian dua
kali.
35. 35
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa
Misalkan T( N ) adalah waktu untuk
menyelesaikan masalah dengan ukuran
input N.
maka T( 1 ) = 1 (1 adalah quantum time
unit ketika memproses base case; ingat
konstanta tidak terlalu penting. ).
T( N ) = 2 T( N / 2 ) + N
Dua buah pemanggilan rekursif, masing-
masing berukuran N / 2. Waktu yang
dibutuhkan untuk menyelesaikan masing-
masing-nya adalah T( N / 2 )
Kasus ketiga membutuhkan O( N ) .
37. 37
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
N log N
Setiap algoritma rekursif yang menyelesaikankan
permasalahan dengan membagi dua
permasalahan kemudian melakukan proses linear
(menggabung atau memecah) akan selalu O( N
log N ) karena analisa yang sama tetap berlaku.
Algoritma yang O( N log N ) adalah jauh lebih
baik dibanding quadratic.
Tapi masih belum lebih baik dibanding O( N ),
namun tidak terlalu jauh berbeda.
Untuk permasalahan ini terdapat solusi yang
linear. Menganalisa running time cukup jelas,
namun memeriksa kebenaran program ataupun
menyusun algoritma tersebut tidak mudah .
38. 38
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Algoritma linear
Algoritma Linear merupakan yang terbaik.
Ingat: linear artinya O( N ).
Running time yang linear selalu sebanding
dengan ukuran input. Sulit untuk membuat
algoritma yang lebih baik dari linear (kecuali
ada rumusan tertentu).
Jika input membesar dengan kelipatan 10,
maka running time juga hanya akan
membesar dengan kelipatan yang sama.
39. 39
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Ide
Ai,j adalah kumpulan bilangan mulai dari
urutan i hingga urutan j.
Si,j adalah dari kumpulan bilangan tersebut.
Theorema: Untuk Ai,j dengan Si,j < 0. Jika q >
j, maka Ai,q bukanlah deretan terurut yang
terbesar.
41. 41
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Program – versi 1
static public int
maximumSubSequenceSum3 (int a[])
{
int maxSum = 0;
int thisSum = 0;
for (int jj = 0; jj < a.length; jj++) {
thisSum += a[jj];
if (thisSum > maxSum) {
maxSum = thisSum;
} else if (thisSum < 0) {
thisSum = 0;
}
}
return maxSum;
}
42. 42
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Program – versi 2
static public int
maximumSubSequenceSum3b (int a[])
{
int thisSum = 0, maxSum = 0;
for (int ii = 0; ii < a.length; ii++) {
thisSum = Max(0, a[ii] + thisSum);
maxSum = Max(thisSum, maxSum);
}
return maxSum;
}
43. 43
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Running Time
44. 44
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Running Time: on different machines
Algoritma Kubik pada mesin Alpha 21164 at 533 Mhz
menggunakan C compiler (mewakili mesin yang cepat)
Algoritma Linear pada mesin Radio Shack TRS-80 Model III
(a 1980 personal computer with a Z-80 processor running at
2.03 Mhz) using interpreted Basic (mewakili mesin lambat)
n Alpha
21164A,
C compiled,
Cubic
Algorithm
TRS-80,
Basic interpreted,
Linear Algorithm
10 0.6 microsecs 200 milisecs
100 0.6 milisecs 2.0 secs
1,000 0.6 secs 20 secs
10,000 10 mins 3.2 mins
100,000 7 days 32 mins
1,000,000 19 yrs 5.4 hrs
45. 45
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Running Time: Moral Of The Story
Bahkan teknik programming yang terbaik tak
akan dapat membuat sebuah algoritma yang
tidak efisien menjadi cepat.
Sebelum kita menginvestasikan waktu untuk
mencoba mengoptimisasi program, kita harus
pastikan algoritma nya sudah yang paling
efisien.
46. 46
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Algoritma Logaritme
Definisi Formal
Untuk setiap B, N > 0, logB N = K, if B K
= N.
Jika (base) B diabaikan, maka default-nya
adalah 2 dalam konteks ilmu komputer (binary
representation).
Contoh:
log 32 = 5 (karena 25
= 32)
log 1024 = 10
log 1048576 = 20
log 1 milyard = sekitar 30
logaritme berkembang jauh lebih lambat dari
N dan lebih lambat dari akar kuadrat dari N.
47. 47
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Contoh Algoritma Logaritme
BITS IN A BINARY NUMBER
Berapa banyak bits dibutuhkan untuk
merepresentasikan bilangan bulat?
REPEATED DOUBLING
Mulai dari X = 1, berapa kali X harus dikalikan
dua agar mendekati nilai N?
REPEATED HALVING
Mulai dari X = N, jika N dibagi dua terus
menerus, berapa kali iterasi agar membuat N
lebih kecil atau sama dengan 1 (Halving rounds
up).
Jawaban untuk seluruh pertanyaan diatas
adalah:
log N (dibulatkan).
48. 48
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Mengapa log N?
B bits menyatakan 2B
bilangan bulat. Maka 2B
adalah minimal sebesar N, maka B adalah
minimal log N. Karena B bilangan bulat, maka
pembulatan dibutuhkan.
Pendekatan serupa untuk contoh-contoh lain.
49. 49
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Repeated Halving Principle
Sebuah algoritma adalah O( log N ) jika
membutuhkan waktu konstan untuk membagi
input permasalahan dan mengerjakan masing-
masing-nya secara rekursif. (biasanya 1/2).
Penjelasan: Akan terjadi sebanyak log N dari
proses konstan tersebut.
50. 50
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Linear Search
Bila diberikan sebuah bilangan bulat X dan sebuah
array A, kembalikan posisi X dalam A atau sebuah
tanda bila tidak ada X dalam A. Jika X muncul lebih dari
sekali, kembalikan posisi manapun. Array A tidak perlu
diubah.
Jika array input tidak terurut, solusinya adalah
menggunakan linear search. Running times:
pencarian tidak berhasil: O( N ); setiap element
diperiksa
pencarian berhasil:
• Worst case: O( N ); setiap element diperiksa
• Average case: O( N ); setengah bagian diperiksa
Apakah kita akan dapat melakukannya lebih baik bila
diketahui array input terurut?
51. 51
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Binary Search
Ya! Gunakan binary search.
Lihat bilangan ditengah (asumsi array terurut dari kiri
ke kanan)
Kasus 1: Jika X lebih kecil dari bilangan ditengah,
maka hanya perlu lihat sub array bagian kiri.
Kasus 2: Jika X lebih besar dari bilangan ditengah,
maka hanya perlu lihat sub array bagian kanan
Kasus 3: Jika X sama dengan bilangan ditengah,
maka selesai.
Base Case: Jika input sub array kosong, X tidak
ditemukan.
Logaritme sesuai dengan the repeated halving
principle.
Algoritma binary search pertama dipublikasikan tahun
1946. Published binary search pertama tanpa bugs
tidak muncul hingga 1962.
52. 52
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
/**
Performs the standard binary search using two comparisons per
level.
@param a the array
@param x the key
@exception ItemNotFound if appropriate.
@return index where item is found.
*/
public static int binarySearch (Comparable [ ] a,
Comparable x ) throws ItemNotFound
{
int low = 0;
int high = a.length - 1;
int mid;
while( low <= high )
{
mid = (low + high) / 2;
if (a[mid].compareTo (x) < 0) {
low = mid + 1;
} else if (a[mid].compareTo (x) > 0) {
high = mid - 1;
} else {
return mid;
}
}
throw new ItemNotFound( "BinarySearch fails" );
}
53. 53
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa program Binary Search
Dapat melakukan satu perbandingan tiap
iterasi dari pada dua iterasi dengan cara
menggantikan base case:
Save the value returned by a[mid].compareTo
(x)
Average case dan worst case dalam
algoritma hasil revisi adalah sama : 1 + log N
perbandingan (dibulatkan). Contoh: If N =
1,000,000, maka 20 bilangan dibandingkan.
Sequential search akan lebih banyak 25,000
kali dalam kondisi rata-rata (average case).
54. 54
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Big-Oh Rules (1)
Ekspresi matematika untuk menyatakan tingkat laju
pertumbuhan relatif:
DEFINITION: (Big-Oh) T(N) = O(F(N)) jika ada
konstan positif c dan N0 sehingga T(N) ≤ c F(N)
untuk N ≥ N0.
DEFINITION: (Big-Omega) T(N) = Ω (F(N)) jika ada
konstan c dan N0 sehingga T(N) ≥ c F(N) untuk N
≥ N0
DEFINITION: (Big-Theta) T(N) = Θ (F(N)) jika dan
hanya jika T(N) = O(F(N)) dan T(N) = Ω (F(N)).
DEFINITION: (Little-Oh) T(N) = o(F(N)) jika dan
hanya jika T(N) = O(F(N)) dan T(N) ≠ Θ (F(N)).
55. 55
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Big-Oh Rules (2)
Arti dari beberapa fungsi tingkat laju.(diambil dari Weiss 2006)
Jika ada lebih dari satu parameter, maka aturan tersebut
berlaku untuk setiap parameter.
4 n log(m) + 50 n2
+ 500 m + 1853
O(n log(m) + n2
+ m)
4 m log(m) + 50 n2
+ 500 m + 853
O(m log(m) + n2
)
56. 56
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Latihan
Urutkan fungsi berikut berdasarkan laju
pertumbuhan (growth rate)
N, √N, N1.5
, N2
, N log N, N log log N, N log2
N, N
log (N2
), 2/N, 2N
, 2N/2
, 37, N3
, N2
log N
A5
+ B5
+ C5
+ D5
+ E5
= F5
0 < A ≤ B ≤ C ≤ D ≤ E ≤ F ≤ 75
Rancang algoritmanya.
Apakah algoritm tersebut sudah efisien?