Analisis Perbandingan Algoritma Rekursif dan Non-Rekursif secara DFS (Depth First Search) dengan Memanfaatkan Graf

dokumen-dokumen yang mirip
ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Kode MK/ Pemrograman Terstruktur 2

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

Studi Algoritma Optimasi dalam Graf Berbobot

ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS

Penerapan Algoritma BFS, DFS, DLS dan IDS dalam Pencarian Solusi Water Jug Problem

BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Struktur Data. Queue (Antrian)

Kompleksitas Algoritma

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penerapan Algoritma Greedy dan Algoritma BFS untuk AI pada Permainan Greedy Spiders

Aplikasi Branch and Bound Pada Pencarian Jalan Pada Software Navigasi

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Aplikasi Rekursif dalam Analisis Sintaks Program

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

Implementasi Intuitif Penyelesaian Labirin dengan Algoritma Depth-First Search

Penerapan BFS dan DFS dalam Garbage Collection

Penerapan Teori Graf Pada Algoritma Routing

MAKALAH ALGORITMA DIVIDE AND CONQUER

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

I. PENDAHULUAN II. DASAR TEORI. Contoh lainnya: Solusi: 0= V,1= I,2= O,3= R, 4= N,5= L,7= A,8= F,9= E.

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

PENGGUNAAN BRUTE FORCE UNTUK MERETAS PASSWORD FILE RAR

Algoritma Puzzle Pencarian Kata

ALGORITMA & PEMROGRAMAN

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

ANALISIS PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI PERSOALAN LOMPATAN KUDA

Algoritma Penentuan Graf Bipartit

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Pemanfaatan Directed Acyclic Graph untuk Merepresentasikan Hubungan Antar Data dalam Basis Data

Algoritma Brute Force

Permodelan Pohon Merentang Minimum Dengan Menggunakan Algoritma Prim dan Algoritma Kruskal

MAKALAH STRATEGI ALGORITMIK (IF 2251) ALGORITMA RUNUT BALIK DALAM GAME LABIRIN

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

BAB 2 LANDASAN TEORI

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Aplikasi Graf dalam Rute Pengiriman Barang

PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI TEKA-TEKI BATTLESHIP

STRUKTUR DATA Pertemuan 4

LIST LINIER 1. DEFINISI

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

BAB II LANDASAN TEORI

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Implementasi Algoritma DFS pada permainan Monument Valley

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Algoritma Traversal di dalam Graf

Aplikasi Graf pada Persoalan Lintasan Terpendek dengan Algoritma Dijkstra

Linked List. Bandung 2013

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

Penerapan Pohon Dalam Heap Sort

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

BAB VII ALGORITMA DIVIDE AND CONQUER

Penerapan Algoritma Needleman-Wunsch sebagai Salah Satu Implementasi Program Dinamis pada Pensejajaran DNA dan Protein

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Analisis Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore dalam Proses Pencarian String

Algoritma Pencarian String Knuth-Morris-Pratt Dalam Pengenalan Tulisan Tangan

PERBANDINGAN ALGORITMA BFS DAN DFS DALAM PEMBUATAN RUTE PERJALANAN OBJEK PERMAINAN 2 DIMENSI

Pengaplikasian Algoritma Knuth-Morris-Pratt dalam Teknik Kompresi Data

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

4. STACK / TUMPUKAN TEORI PENUNJANG

Penentuan Lokasi Pemasaran Produk dengan Media Periklanan Menggunakan Algoritma Greedy

Pemodelan Sistem Lalu Lintas dengan Graf Ganda Berarah Berbobot

Penggunaan Algoritma Knuth-Morris-Pratt untuk Pengecekan Ejaan

Transkripsi:

1 nalisis Perbandingan lgoritma Rekursif dan Non-Rekursif secara S (epth irst Search) dengan Memanfaatkan raf ayu di Persada 13505043 STRK Program Studi Teknik Informatika Institut Teknologi andung Jalan anesha No 10, andung, Indonesia persada_adi@yahoo.com, if15043@students.if.itb.ac.id S (epth irst Search) merupakan salah satu metode untuk penelusuran pencarain solusi persoalan dalam graf dengan memprioritaskan kedalaman graf tersebut. Terdapat dua buah cara pengaplikasian S, yaitu dengan cara rekursif dan non-rekursif. Perbedaan utama penggunaan cara rekursif dengan nonrekursif adalah dalam pencarian rekursif, penyelesaiannya dilakukan dengan memanggil fungsi atau prosedur di atasnya, sedangkan untuk pencarian non-rekursif, penyelesaiannya memanfaatkan stack. Perbandingan ini akan didasarkan kepada kompleksitas beserta kelebihan dan kekurangan pada masingmasing algoritma tersebut. Perbandingan inilah yang nantinya menjadi dasar untuk memberikan kesimpulan algoritma mana yang cocok untuk masalah dan dalam komdisi tertentu. Makalah ini mudah-mudahan memberikan sedikit pemikiran tentang analisa perbandingan penyelesaian suatu masalah dengan penelusuran S pada graf dengan menggunakan algoritma rekursif dan nonrekursif. Perbandingan ini akan didasarkan kepada kompleksitas kedua algoritma tersebut. Kata kunci: S, algoritma, graf, rekursif, non-rekursif, stack 1. PNULUN raf merupakan kumpulan simpul-simpul yang dihubungkan dengan busur-busur. Setiap busur dihubungkan dengan tepat dua simpul. Persoalan dalam kehidupan sehari-hari banyak yang dapat diimplementasikan oleh graf. raf merupakan model matematika yang sangat rumit dan kompleks, tapi bias menjadi solusi yang mangkus dan tepat untuk sebuah permasalahan tertentu. Oleh karena itu, representasi dari suatu graf bergantung dari sifat data dan operasi yang akan dilakukan terhadap sekumpulan data tersebut pada kasus atau permasalahan tertentu. Terdapat banyak operasi yang dapat dilakukan pada graf, diantaranya operasi pembentukan graf, operasi untuk mengirimkan besaran graf, operasi penelusuran graf, operasi penelusuran jalur terpendek, pembuatan pohon merentang minimum, dan sebagainya. lgoritma traversal pada graf ada 2 buah, salah satunya adalah S yang akan dibahas dalam makalah ini. S diterapkan pada graf statis, yaitu graf yang sudah tersedia atau dibentuk terlebih dahulu sebelum pencarian solusi. Makalah yang saya buat ini bertujuan untuk membandingkan kompleksitas algoritma rekursif dan non-rekursif pada penyelesaian masalah dengan memanfaatkan penelusuran graf secara S. Saya berharap makalah ini akan memberikan kesimpulan algoritma yang lebih efisien, rekursif atau non-rekursif. 2. RPRSNTSI MSL Misal contoh graf-nya adalah : ambar 1. ontoh raf dengan 8 Simpul 1 2 3 4 5 6 8 7 MKL I 2251 STRTI LORITMIK TUN 2007 nalisis Perbandingan lgoritma Rekursif dan Non-Rekursif secara S dengan Memanfaatkan raf ayu di Persada - 13505043

2 Representasi raf dengan matriks Ketetanggaan 1 2 3 4 5 6 7 8 1 0 1 1 0 0 0 0 0 2 1 0 1 1 1 0 0 0 3 1 1 0 0 0 1 1 0 4 0 1 0 0 0 0 0 1 5 0 1 0 0 0 0 0 1 6 0 0 1 0 0 0 0 1 7 0 0 1 0 0 0 0 1 8 0 0 0 1 1 1 1 0 Representasi raf dengan List Ketetanggaan Procedure Proses (input V : char) { I.S: V adalah nomor dari simpul yang akan iproses.s: simpul V telah diproses lgoritma Proses (V) Visited [V] true for i 1 to N do if ([V,W] =1) and (not visited [W] ) then S_Rekursif (W) endif endfor Penelusuran graf dengan S rekursif direpresentasikan dengan tabel sebagai berikut: 3. LORITM RKURSI lgoritma rekursif adalah algoritma yang memanggil dirinya sendiri. Maka algoritma rekursif selalu disusun oleh 2 bagian yaitu basis dan rekurens. asis merupakan keadaan penghenti dari pemanggilan sendiri algoritma itu sedangkan rekurens merupakan pemanggilan algoritma itu sendiri. lgoritma rekursifnya adalah : Procedure S_Rekursif (input V : char) { I.S: Terdefinisi yaitu matriks ketetanggan dari sebuah graf V adalah simpul yang akan diproses.s: Simpul V telah di proses Tingkat prosedur dalam graf Pemanggilan prosedur Output (info ()) S_rekursif (left()) ()) (left ()) ()) 2 S_rekursif (left ()) ()) 2 S_rekursif (left ()) (right ()) ()) 2 S_rekursif (left()) Isi simpul Karakter tercetak Kamus W : char ()) MKL I 2251 STRTI LORITMIK TUN 2007 nalisis Perbandingan lgoritma Rekursif dan Non-Rekursif secara S dengan Memanfaatkan raf ayu di Persada - 13505043

3 3 S_rekursif (left ()) (right ()) ()) (left()) ()) 2 S_rekursif (left ()) ()) 3 S_rekursif (left ()) tingkat utama S_rekursif (right ()) ()) (left ()) ()) (left ()) ()) 2 S_rekursif (left ()) ()) 3 S_rekursif (left ()) (left ()) ()) 2 S_rekursif (left ()) ()) 3 S_rekursif (left ()) (right ()) ()) 2 S_rekursif (left()) ()) 3 S_rekursif (left ()) Tabel 1. Penelusuran S dengan lgoritma Rekursif nalisis Ruang : Terlihat pada algoritma penelusuran graf secara rekursif dengan S, tidak terlihat unsur stack sama sekali yang berbeda dengan algoritma non-rekursif. al ini disebabkan karena stack bersifat implisit, artinya tidak ditampilkan tetapi sebenarnya dikelola oleh compiler. ompiler sendiri membatasi besaran penggunaan tumpukan stack itu sendiri. Jika pemanggilan rekursif tersebut melebihi batas, maka compiler sendiri yang tidak mampu menampung kelebihan tersebut, sehingga terjadi stack overflow. Setiap terjadi pemanggilan rekursif, memori untuk tumpukan elemen yang baru dialokasikan untuk menyimpan alamat kembali peubah lokal dan parameter prosedur dan fungsi. 4. LORITM NON-RKURSI Penelusuran S pada graf dapat juga diselesaikan dengan algoritma non-rekursif, yaitu dengan memanfaatkan definisi stack dengan representasi array. lgoritma non-rekursif nya adalah: Procedure S_NonRekursif (input V : char) { I.S. Terdefinisi yaitu matriks ketetanggan dari sebuah graf V adalah simpul yang akan diproses.s. Simpul V telah di proses MKL I 2251 STRTI LORITMIK TUN 2007 nalisis Perbandingan lgoritma Rekursif dan Non-Rekursif secara S dengan Memanfaatkan raf ayu di Persada - 13505043

4 Kamus W : char S : stack Procedure reatestack (output S : Stack) { I.S : sembarang.s : sebuah stack S kosong siap dipakai dan terdefenisi unction IsmptyStack (S : Stack ) boolean { Test stack kosong: alse jika tumpukan tidak kosong dan mengirim true jika tumpukan kosong Procedure PushStack (input/output S : Stack; Input P : address) { Menambahkan elemen baru pada TOP, dengan elemen yang sudah diketahui alamatnya Procedure PopStack (input/output S : Stack; Output P : address) { I.S : stack tidak kosong.s: alamat elemen TOP disimpan pada P, shg Informasi dapat diakses melalui P { Menghapus elemen stack, stack tidak boleh Kosong dan mungkin setelah penghapusan stack menjadi kosong Procedure Proses (input V : char) { I.S: V adalah simpul yang akan iproses.s: simpul V telah diproses lgoritma Proses (V) Visited[ V] true while not IsmptyStack (S) do PopStack (S,V) while (V<>) do if ([V,W] =1) and (not visited [W] ) then Proses(W) PushStack (S,W) Visited[W] true endif endwhile endwhile IsmptyStack (S) Penelusuran graf dengan S rekursif direpresentasikan dengan tabel sebagai berikut: Simpul yang dikunjungi Isi Simpul lamat yang di Push Right () = Left () Right () = Left () Right () = Isi Stack Karakter Tercetak Left () - - Pop - Left () - Pop - Left () Right () = Pop - - Pop Right () = Pop - Tabel 2. Penelusuran S dengan lgoritma nonrekursif nalisis Ruang : erbeda dengan algoritma rekursif, pada algoritma ini, programmer harus terlebih dahulu mendefinisikan stack beserta operasinya. al ini disebabkan stack bersifat eksplisit, yang artinya segala sesuatu yang berhubungan dengan stack harus dikelola programmer sendiri. Pengelolaan mandiri ini menyebabkan proses dan segala operasi pada stack akan sangat mudah untuk ditelusuri dan memperkecil alokasi memori yang dibutuhkan. nalisis Waktu : Operasi dasar dari algoritma ini adalah pengecekan status stack, apakah kosong atau tidak sehingga menyebabkan kompleksitas algoritma ini adalah O(n), dengan n adalah jumlah simpul yang dikunjungi. 5. KSIMPULN Sebenarnya dalam prinsip pengaplikasian kedua algoritma S ini sama-sama menggunakan stack. MKL I 2251 STRTI LORITMIK TUN 2007 nalisis Perbandingan lgoritma Rekursif dan Non-Rekursif secara S dengan Memanfaatkan raf ayu di Persada - 13505043

5 Perbedaan mendasarnya adalah dalam algoritma rekursif, stack dikelola secara implisit oleh compiler sedangkan pada algoritma non-rekursif, stack dikelola secara eksplisit oleh programmer baik dalam proses maupun operasi di dalamnya. ari segi efisiensi dalam kode program, algoritma S rekursif lebih hemat karena hanya tinggal memanggil prosedur di atasnya tanpa memperhatikan pengelolaan stack. kan tetapi, melihat dari segi memori yang digunakan, algoritma non-rekursif lebih efisien dan efektif karena memori yang digunakan lebih sedikit. 6. SRN Jika jumlah simpul pada graf yang akan ditelusuri secara S relatif sedikit, maka sebaiknya digunakan algoritma rekursif karena akan lebih efisien dan efektif dari segi program itu sendiri. Sebaliknya, jika simpul yang akan ditelusuri cukup banyak, maka algoritma non-rekursif merupakan solusi terbaik karena hanya sedikit memakan memori. RRNSI [01] Munir, Rinaldi. 2006. Matematika iskrit. andung : IT. [02] Munir, Rinaldi. 2007. Strategi lgoritmik. andung: IT. MKL I 2251 STRTI LORITMIK TUN 2007 nalisis Perbandingan lgoritma Rekursif dan Non-Rekursif secara S dengan Memanfaatkan raf ayu di Persada - 13505043