Oleh: Rinaldi Munir Informatika STEI-ITB

Slides:



Advertisements
Presentasi serupa
Tree Kumpulan node yang saling terhubung satu sama lain dalam suatu kesatuan yang membentuk layaknya struktur sebuah pohon. Struktur pohon adalah suatu.
Advertisements

STRUKTUR DATA (10) tree manipulation
SEKUEN Minggu II -- (40 menit)
LINKED LIST (List linier)
Linked List Pembuatan Simpul Awal.
By : Fitroh Amaluddin & Galih Wasis W.
Bahan Kuliah IF3051 Strategi Algoritma Oleh: Rinaldi Munir
Rekursif Yuliana Setiowati.
REKURSIF Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0.
Design and Analysis of ALGORITHM (Session 3)
Implementasi Binary Tree
Pertemuan Struktur Data *Pohon Ekspresi *
Struktur Organisasi Data 2
PEMROGRAMAN SISTEM PERNYATAAN DASAR PILIHAN Pertemuan V
Binary Tree Rangga Juniansyah.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
STRUKTUR PEMILIHAN (KONTROL PROGRAM) Minggu III - 40 menit
Penelusuran Bab 7 Pohon Biner 219.
LINKED LIST by Yohana N.
Binary Search Tree 2007/2008 – Ganjil – Minggu 9.
Tenia Wahyuningrum, S.Kom. MT
Algoritma Runut-balik (Backtracking)
STRUKTUR DATA tree manipulation
BINARY TREE Universitas Ahmad Dahlan
1 Pertemuan Tree Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
1 Nama Kelompok : Doddy Setiawan Moh. Abdul Latief Yosep Pangky ALGORITMA MERGE SORT.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Pertemuan 7 stack jual [Valdo] Lunatik Chubby Stylus.
Pertemuan 10 DIVIDE And CONQUER Lanjutan ….
Binary Search Tree. Sebuah node di Binary Search Tree memiliki path yang unik dari root menurut aturan ordering – Sebuah Node, mempunyai subtree kiri.
Grafika Komputer dan Visualisasi Disusun oleh : Silvester Dian Handy Permana, S.T., M.T.I. Fakultas Telematika, Universitas Trilogi Pertemuan 15 : Kurva.
Pohon Seimbang / AVL Tree (Bab 6)
Binary Tree.
Defri Kurniawan POHON DAN POHON BINER Defri Kurniawan
Defri Kurniawan ADT STACK Defri Kurniawan
Bahan Kuliah IF2211 Strategi Algoritma Oleh: Rinaldi Munir
STRUKTUR POHON ( BINER )
Binary Tree Rangga Juniansyah.
PENGANTAR LOGIKA & TEKNIKPEMROGRAMAN
STACK Denny Agustiawan,M.pd
Manipulasi Tree.
Achmad Yasid Struktur Data.
SEMANTIKS Pertemuan Ke-3.
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
Tree (POHON).
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
PEMROGRAMAN PASCAL ELEMEN PEMROGRAMAN PASCAL.
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
Pertemuan 24 Teknik Searching
Manipulasi Tree.
Pohon.
BINARY SEARCH Tim Algoritma Pemrograman Teknik Informatika
Linked List 6.3 & 7.3 NESTED LOOP.
PERBEDAAN C DAN C++ Meriska Defriani, S
Pohon Rinaldi M/IF2120 Matdis.
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
Tree (Pohon).
PENGANTAR LOGIKA & TEKNIK PEMROGRAMAN
Oleh Shoffin Nahwa Utama, S.Kom
IT234 Algoritma dan Struktur Data
Defri Kurniawan VARIASI LIST Defri Kurniawan
Linear Doubly INSERT KIRI
Linear Doubly Linked List
ANALISIS ALGORITMA DALAM PENERAPAN GAMBAR
Pohon Biner.
IT234 Algoritma dan Struktur Data
Pengantar Strategi Algoritma
Rekursif Yuliana Setiowati. Rekursif Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.
Algoritma dan struktur data
Review Struktur Data Nisa’ul Hafidhoh, MT.
Transcript presentasi:

Oleh: Rinaldi Munir Informatika STEI-ITB Aplikasi Divide and Conquer pada: 1. Grafika Komputer 2. Evaluasi expression tree Oleh: Rinaldi Munir Informatika STEI-ITB

Bezier Curve Bezier Curve adalah kurva yang sering digunakan dalam grafika komputer (computer graphics). Dalam grafik vektor, Bezier curves digunakan untuk memodelkan kurva mulus. Kurva Bézier dipublikasikan secara luas pada tahun 1962 oleh insinyur Pierre Bézier Perancis, yang menggunakannya untuk merancang badan mobil.

Pemodelan Kurva Bezier Sebuah kurva Bézier didefinisikan oleh satu set titik kontrol P0 sampai Pn, n disebut order (n = 1 untuk linier, 2 kuadrat, dll). Titik kontrol pertama dan terakhir selalu titik akhir dari kurva, namun, titik kontrol antara (jika ada) umumnya tidak terletak pada kurva.

Kurva Linier Diberikan titik P0 dan P1, kurva Bézier linear adalah sebuah garis lurus antara dua titik. Kurva diberikan oleh: t dalam fungsi kurva Bézier linier menggambarkan seberapa jauh B (t) dari P0 ke P1. Misalnya ketika t = 0,25, B (t) adalah seperempat dari jalan dari titik P0 ke P1. Seperti t bervariasi dari 0 ke 1, B (t) menggambarkan garis lurus dari P0 ke P1.

Kurva Kuadratik Diberikan poin yang diberikan P0, P1, P2 , kurva Bézier kuadrat adalah lintasan yang dilalui oleh fungsi B (t), yang dapat diartikan sebagai interpolasi linear dari titik yang sesuai pada kurva Bézier linier dari P0 ke P1 dan dari P1 ke P2. Penyederhanaan:

Untuk kurva Bézier kuadratik perlu dibangun titik antara (Q0 dan Q1 s bagaimana t bervariasi dari 0 sampai 1: (i) Titik Q0 bervariasi dari P0 ke P1  kurva Bezier linier. (ii) Titik Q1 titik bervariasi dari P1 ke P2  kurva Bézier linier. (iii) Titik B (t) bervariasi dari Q0 ke Q1  kurva Bézier kuadrat.

Kurva Bezier Orde Lebih Tinggi

Orde 4:

Aplikasi Divide and Conquer Ada banyak cara membentuk kurva Bezier. Cara sederhana adalah menggunakan algoritma titik tengah yang berbasis divide and conquer. Pada contoh ini diperlihatkan cara mebentuk kurva Bezier kuadratik dengan algoritma titik tengah berbasis divide and conquer.

Kurva Bezier curve dimulai dengan tiga titik yang bisa di-set secara manual. Hitung titik tengah setiap garis yang terletak di antara tiga titik awal. Titik-titik pertengahan baru dihitung ditampilkan dalam warna hijau. Titik-titik yang mengubah warna menjadi biru akan berada di kurva Bezier akhir.

private void PopulateBezierPoints(PointF ctrl1, PointF ctrl2, private void PopulateBezierPoints(PointF ctrl1, PointF ctrl2, PointF ctrl3, int currentIteration) { if (currentIteration < iterations) { //calculate next mid points PointF midPoint1 = MidPoint(ctrl1, ctrl2); PointF midPoint2 = MidPoint(ctrl2, ctrl3); PointF midPoint3 = MidPoint(midPoint1, midPoint2); //the next control point currentIteration++; PopulateBezierPoints(ctrl1, midPoint1, midPoint3, currentIteration); //left branch bezierPoints.Add(midPoint3); //add the next control point PopulateBezierPoints(midPoint3, midPoint2, ctrl3, currentIteration); //right branch } }

private PointF MidPoint(PointF controlPoint1, PointF controlPoint2) { return new PointF( (controlPoint1.X + controlPoint2.X) / 2, (controlPoint1.Y + controlPoint2.Y) / 2 ); }

private void CreateBezier(PointF ctrl1, PointF ctrl2, PointF ctrl3) { bezierPoints = new List<PointF>(); bezierPoints.Clear(); bezierPoints.Add(ctrl1); // add the first control point PopulateBezierPoints(ctrl1, ctrl2, ctrl3, 0); bezierPoints.Add(ctrl3); // add the last control point }

Sumber: http://www.codeproject.com/Articles/223159/Midpoint-Algorithm-Divide-and-Conquer-Method-for-D http://en.wikipedia.org/wiki/Bezier_curve

Expression Tree Di dalam compiler bahasa pemrograman, ekspresi aritmetika direpresentasikan dalam pohon biner yaitu expression tree Contoh: (5 + z) / -8) * (4 ^ 2) Sumber gambar: Wikipedia.org

Mengevaluasi Expression Tree Simpul daun  operand Simpul dalam  operator (+, -, *, /) Struktur data pohon: Pada simpul daun  left = NIL dan right = NIL

Algoritma divide and conquer: If node adalah simpul daun return nilainya else secara rekursif evaluasi upa-pohon kiri dan return nilainya secara rekursif evaluasi upa-pohon kanan dan return nilainya lakukan operasi yang bersesuaian dengan operator dan return nilainya

procedure Evaluasi(input T : Pohon, output nilai : integer) Algoritma: if left(T) = NIL and right(T) = NIL { simpul daun} nilai  item(T) else { simpul dalam } Evaluasi(left(T), nilai1); Evaluasi(right(T), nilai2); case item(T) of “+” : nilai  nilai1 + nilai2 “-” : nilai  nilai1 - nilai2 “*” : nilai  nilai1 * nilai2 “/” : nilai  nilai / nilai2 end

function Evaluasi(T : Pohon)  integer Algoritma: if left(T) = NIL and right(T) = NIL { simpul daun} return item(T) else { simpul dalam } case item(T) of “+” : return Evaluasi(left(T)) + Evaluasi(right(T)) “-” : return Evaluasi(left(T)) - Evaluasi(right(T)) “*” : return Evaluasi(left(T)) * Evaluasi(right(T)) “/” : return Evaluasi(left(T)) / Evaluasi(right(T)) end