Pertemuan 3 LINKED LIST (PART 2) Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009.

Slides:



Advertisements
Presentasi serupa
Desain Dan Analisis Algoritma
Advertisements

Algoritma dan Struktur Data
Aryo Pinandito, ST, M.MT - PTIIK UB
Design and Analysis of Algorithm Recursive Algorithm Analysis
1 Algoritma Bahasa Pemrograman dan Bab 1.1. Pengertian Algoritma.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
Modul-8 : Algoritma dan Struktur Data
Korelasi Linier KUSWANTO Korelasi Keeratan hubungan antara 2 variabel yang saling bebas Walaupun dilambangkan dengan X dan Y namun keduanya diasumsikan.
K-Map Using different rules and properties in Boolean algebra can simplify Boolean equations May involve many of rules / properties during simplification.
TEKNIK PENGINTEGRALAN
Algoritma dan Struktur Data
Algoritma dan Struktur Data
1 DATA STRUCTURE “ STACK” SHINTA P STMIK MDP APRIL 2011.
1 Diselesaikan Oleh KOMPUTER Langkah-langkah harus tersusun secara LOGIS dan Efisien agar dapat menyelesaikan tugas dengan benar dan efisien. ALGORITMA.
Sorting 2007/2008 – Ganjil – Minggu 5.
Pertemuan 3 ALGORITMA & FUNGSI KOMPLEKSITAS
Organisasi dan arsitektur komputer
Pertemuan-2 Kriteria kebaikan suatu algoritme Correctness
Ruang Contoh dan Peluang Pertemuan 05
Algoritma dan Struktur Data
1 Pertemuan 21 Function Matakuliah: M0086/Analisis dan Perancangan Sistem Informasi Tahun: 2005 Versi: 5.
PERTEMUAN KE-6 UNIFIED MODELLING LANGUAGE (UML) (Part 2)
Pertemuan 07 Peluang Beberapa Sebaran Khusus Peubah Acak Kontinu
HAMPIRAN NUMERIK SOLUSI PERSAMAAN NIRLANJAR Pertemuan 3
1 Pertemuan 15 Game Playing Matakuliah: T0264/Intelijensia Semu Tahun: Juli 2006 Versi: 2/1.
1 Pertemuan 11 Function dari System Matakuliah: M0446/Analisa dan Perancangan Sistem Informasi Tahun: 2005 Versi: 0/0.
9.3 Geometric Sequences and Series. Objective To find specified terms and the common ratio in a geometric sequence. To find the partial sum of a geometric.
Binary Search Tree. Sebuah node di Binary Search Tree memiliki path yang unik dari root menurut aturan ordering – Sebuah Node, mempunyai subtree kiri.
OPERATOR DAN FUNGSI MATEMATIK. Operator  Assignment operator Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda.
Keuangan dan Akuntansi Proyek Modul 2: BASIC TOOLS CHRISTIONO UTOMO, Ph.D. Bidang Manajemen Proyek ITS 2011.
STATISTIKA CHATPER 4 (Perhitungan Dispersi (Sebaran))
Fondasi Pemrograman & Struktur Data
Induksi Matematika.
CSG523/ Desain dan Analisis Algoritma
Strategi Algoritma Kuliah 2 : Kompleksitas Algoritma
Dynamic Array and Linked List
Branch and Bound Lecture 12 CS3024.
Cartesian coordinates in two dimensions
Cartesian coordinates in two dimensions
CSG523/ Desain dan Analisis Algoritma
Pengujian Hipotesis (I) Pertemuan 11
Dasar-Dasar Pemrograman
CA113 Pengantar Manajemen Bisnis
Presentasi Statistika Dasar
Faktor analisa algoritma
Pertemuan 24 Teknik Searching
CSG3F3/ Desain dan Analisis Algoritma
Analisis dan Perancangan Algoritma Kuliah 4 : Asymptotic pd Kasus
Algorithms and Programming Searching
MATERI PERKULIAHAN ANALISIS ALGORITMA
REAL NUMBERS EKSPONENT NUMBERS.
CA113 Pengantar Manajemen Bisnis
Recursive function.
Strategi Algoritma Kuliah 3 : Algoritma Efisien
ACCUMULATION PROBLEMS
Teknik Pengujian Software
STRUKTUR DATA LINKED LIST
Kompleksitas Algoritma
Master data Management
Pertemuan 4 CLASS DIAGRAM.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
How Can I Be A Driver of The Month as I Am Working for Uber?
Things You Need to Know Before Running on the Beach.
CA113 Pengantar Manajemen Bisnis
Algoritma & Pemrograman 1 Achmad Fitro The Power of PowerPoint – thepopp.com Chapter 4.
By Yulius Suprianto Macroeconomics | 02 Maret 2019 Chapter-5: The Standard of Living Over Time and A Cross Countries Source: http//
Draw a picture that shows where the knife, fork, spoon, and napkin are placed in a table setting.
Algorithms. Introduction The methods of algorithm design form one of the core practical technologies of computer science. The main aim of this lecture.
Transcript presentasi:

Pertemuan 3 LINKED LIST (PART 2) Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009

Double LL ◦Suatu LL yang tiap nodenya memiliki 2 buah pointer penunjuk (prev & next / left & right) ◦Setiap node akan memiliki info posisi node sebelumnya dan sesudahnya ◦ penelusuran dapat dua arah (bisa maju mundur)

Double LL (ii) Contoh deklarasi Struct node{ int data; struct node *kiri,*kanan; }; Setiap ada proses harus tetap dijamin kepala menunjuk node awal pada list, pointer kiri kepala adalah NULL dan pointer kanan node terakhir adalah NULL

Double LL (iii) Operasi penambahan pada Double LL Untuk di depan: ◦Baru->kiri=NULL ◦Baru->kanan=kepala ◦ kepala->kiri=Baru ◦Kepala=Baru

Double LL (iv) Operasi penambahan di urutan ke-n: ◦Letakan *penelusur sampai node ke-n  Penelusur= Penelusur->kanan ◦Setelah sampai  Baru->kanan=penelusur  Baru->kiri=penelusur->kiri  Penelusur->kiri=Baru  Penelusur->kiri->kanan=Baru

Double LL (v) Operasi penambahan di akhir: PIKIRKAN SENDIRI !

Double LL (vi) Operasi penghapusan di urutan akhir: ◦Letakan *penelusur sampai node akhir  Penelusur= Penelusur->kanan  (sampai dengan penelusur->kanan==NULL) ◦Setelah sampai  target=penelusur  penelusur->kiri->kanan=NULL  Free(target)

Double LL (vii) Operasi penghapusan di urutan ke-n: ◦Letakan *penelusur sampai node ke-n  Penelusur= Penelusur->kanan ◦Setelah sampai  target=penelusur  penelusur->kiri->kanan=penelusur->kanan  Penelusur->kanan->kiri=penelusur->kiri  Free(target)

Double LL (viii) Operasi penghapusan di depan LAGI-LAGI SILAHKAN PIKIRKAN SENDIRI !

Sirkular LL LL yang node akhirnya dihubungkan pada node awal Untuk linier LL NodeAkhir->next adalah kepala Untuk Double LL ◦NodeAkhir->kanan = kepala ◦Kepala->kiri=NodeAkhir Tujuan untuk menjadikan proses penelusuran lebih fleksibel

LL Terurut LL terurut adalah suatu LL yang node-nodenya dirangkaikan sedemikian sehingga memiliki keteraturan urutan (menaik/menurun)terhadap suatu elemen informasi tertentu pada node Operasinya secara umum sama, yang berbeda hanya masalah inserting (penambahan) Secara rata2 aksi penambahan O(n)

Untung Rugi Linked List Analisis Runing time ◦Insert next O(1) ◦Delete next O(1) ◦Find O(n) Keuntungan Linked List (LL) ◦Growable (dibanding array) ◦Cepat dalam aktifitas penambahan ataupun penghapusan ujung2, ataupun penyisipan yang ingin mempertahankan urutan Kerugian LL ◦Algoritma operasi relatif lebih kompleks ◦Butuh alokasi memory untuk pointer

Pertemuan 3 Part 2 ANALISIS ALGORITMA Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009

What for ? Menganalisis algoritme yang efisien untuk memecahkan suatu masalah Bagaimana mengkarakterisasi dan mengukur kinerja suatu algoritme Padahal suatu algoritme dapat diimplementasikan dalam berbagai bahasa pemrograman, pada berbagai kompiler yang berbeda, mesin yang berbeda dan sistem operasi yang berbeda. Harus ada suatu cara pengukuran untuk mendapatkan algoritme yang efisien, yang independent terhadap OS, mesin, Kompiler dan basprog

Efisiensi Algoritme Suatu algoritme harus efisien dalam dua aspek, yaitu waktu (time) dan ruang (space). Efisiensi waktu adalah pengukuran jumlah waktu untuk eksekusi suatu algoritme Efisiensi ruang adalah pengukuran jumlah memori yang diperlukan untuk eksekusi suatu algoritme Algoritme yang efisien adalah algoritme yang cepat dan memerlukan memori yang paling sedikit Bagaimana membandingkan efisiensi dua algoritme yang menyelesaikan suatu masalah yang sama? Mengimplementasikan keduanya dalam lingkungan yang 100% sama.

Beberapa faktor penentu Bagaimana algoritme dikodekan Apa komputer yang digunakan Struktur data apa yang dipakai Pengukuran kompleksitas algoritme harus terlepas dari aspek-aspek diatas :salah satu caranya secara matematis !!!! Dalam pendekatan matematis analisis algoritme independent terhadap hal-hal teknis diatas.

Algorithm Analysis Analyzing an algorithm = estimating the resources it requires. Time ◦How long will it take to execute?  Impossible to find exact value ◦ Depends on implementation, compiler, architecture  So let's use a different measure of time ◦ e.e. number of steps/simple operations Space ◦Amount of temporary storage required

Time Analysis Goals: ◦Compute the running time of an algorithm. ◦Compare the running times of algorithms that solve the same problem

Time Analysis Observations: ◦Since the time it takes to execute an algorithm usually depends on the size of the input, we express the algorithm's time complexity as a function of the size of the input. ◦Two different data sets of the same size may result in different running times  e.g. a sorting algorithm may run faster if the input array is already sorted. ◦As the size of the input increases, one algorithm's running time may increase much faster than another's  The first algorithm will be preferred for small inputs but the second will be chosen when the input is expected to be large.

Time Analysis Ultimately, we want to discover how fast the running time of an algorithm increases as the size of the input increases. This is called the order of growth of the algorithm Since the running time of an algorithm on an input of size n depends on the way the data is organized, we'll need to consider separate cases depending on whether the data is organized in a "favorable" way or not.

Time analysis Best case analysis ◦Given the algorithm and input of size n that makes it run fastest (compared to all other possible inputs of size n), Worst case analysis ◦Given the algorithm and input of size n that makes it run slowest (compared to all other possible inputs of size n), ◦A bad worst-case complexity doesn't necessarily mean that the algorithm should be rejected. Average case analysis ◦Given the algorithm and a typical, average input of size n

Time Analysis Iterative algorithms ◦Concentrate on the time it takes to execute the loops Recursive algorithms ◦Come up with a recursive function expressing the time and solve it.

Waktu Eksekusi dan Ukuran Masalah For (i=0;i<N;i++) S1; Jika s1 memerlukan waktu konstan k1, berapa lama pengulangan akan dieksekusi? Waktu eksekusi t = N * k1 For i=1 to n for j=1 to i for k=1 to 5 S4; Asumsikan bahwa pernyataan S4 memerlukan m unit waktu. Sehingga waktu total yang diperlukan untuk mengeksekusi segmen algoritme tersebut adalah : n ∑ 5 x m x i = 5 x m x ( ….+ n) i=1 Dari contoh diatas dapat dinyatakan kebutuhan waktu suatu algoritme sebagai fungsi dari ukuran masalah

Example Sorting algorithm: insertion sort The idea: ◦Divide the array in two imaginary parts: sorted, unsorted ◦The sorted part is initially empty ◦Pick the first element from the unsorted part and insert it in its correct slot in the sorted part.  Do the insertion by traversing the sorted part to find where the element should be placed. Shift the other elements over to make room for it. ◦Repeat the process. This algorithm is very efficient for sorting small lists

Example continued As we "move" items to the sorted part of the array, this imaginary wall between the parts moves towards the end of the array. When it reaches the edge, we are done!

Example continued Input: array A of size n Output: A, sorted in ascending order function InsertionSort(A[1..n]) begin for i:=2 to n item := A[i] j := i - 1 while (j > 0 and A[j] > item) A[j+1] := A[j] j := j - 1 end while A[j+1] := item end for end

Example continued times executed n-1  (t j -1) n-1 Input: array A of size n Output: A, sorted in ascending order function InsertionSort(A[1..n]) begin for i:=2 to n item := A[i] j := i - 1 while (j > 0 and A[j] > item) A[j+1] := A[j] j := j - 1 end while A[j+1] := item end for end depends on input

Example continued Best case for insertion sort ◦The best case occurs when the array is already sorted. Then, the while loop is not executed and the running time of the algorithm is a linear function of n. Worst case for insertion sort ◦The worst case occurs when the array is sorted in reverse. Then, for each value of i, the while loop is executed i-1 times. The running time of the algorithm is a quadratic function of n. Average case for insertion sort ◦On average, the while loop is executed i/2 times for each value of i. The running time is again a quadratic function of n (albeit with a smaller coefficient than in the worst case)

Algorithm Analysis Observations ◦Some terms grow faster than others as the size of the input increases ==> these determine the rate of growth  Example 1: ◦ In n 2 +4n, n 2 grows much faster than n. We say that this is a quadratic function and concentrate on the term n 2.  Example 2: ◦ Both n 2 +4n and n 2 are quadratic functions. They grow at approximately the same rate. Since they have the same rate of growth, we consider them "equivalent".

Algorithm Analysis We are interested in finding upper (and lower) bounds for the order of growth of an algorithm.

Algorithm Analysis: Big Oh A function f(n) is O(g(n)) if there exist constants c, n 0 >0 such that f(n) c·g(n) for all n  n 0 What does this mean in English? ◦c·g(n) is an upper bound of f(n) for large n Examples: ◦f 1 (n) = 3n 2 +2n+1 is O(n 2 ) ◦f 2 (n) = 2n is O(n) ◦f 3 (n) = 3n+1 is also O(n)  f 2 (n) and f 3 (n) have the same order of growth. ◦f 4 (n) = 1000n 3 is O(n 3 )

Algorithm Analysis: Big Oh To show that f(n) is O(g(n)), ◦all you need to do is find appropriate values for the constants c, n 0 To show that f(n) is NOT O(g(n)), ◦start out by assuming that you have found constants c, n 0 for which f(n) c·g(n) and ◦then try to reach a contradiction: show that f(n) cannot possibly be less than c·g(n) if n can be any integer greater than n 0

Tabel Perbandingan nnnnn+14n Dari tabel diatas dapat dilihat bahwa nn memiliki pengaruh yang sangat besar untuk menentukan waktu eksekusi, sedangkan sisanya hanya mempengaruhi sedikit saja.

Tabel Kompleksitas Waktu OrdeNama O(1)Konstan O(log n)Logaritmik O(n)Linier O(n log n)Log-Linier O(nn)N kuadrat

Algorithm Analysis: Omega A function f(n) is (g(n)) if there exist constants c, n 0 >0 such that f(n)  c·g(n) for all nn 0 What does this mean in English? ◦c·g(n) is a lower bound of f(n) for large n Example: ◦f(n) = n 2 is (n 2 )

Algorithm Analysis: Theta A function f(n) is (g(n)) if it is both O(g(n)) and (g(n)), in other words: ◦There exist constants c1,c2,n>0 s.t. 0  c 1 g(n)  f(n)  c 2 g(n) for all nn 0 What does this mean in English? ◦f(n) and g(n) have the same order of growth ◦ indicates a tight bound. Example: ◦f(n) = 2n+1 is (n)

Wassalamu’alaikum … Terima Kasih Departemen Ilmu Komputer FMIPA-IPB 2009