Sabtu, 02 Januari 2016

TUGAS 15 (GRAF BERARAH DAN TAK BERARAH)

1.   Jelaskan pengertian dari graph!
Graph adalah kumpulan dari simpul dan busur yang secara matematis dinyatakan sebagai :G = (V, E)

2.   Sebutkan dan jelaskan istilah istilah pada graph!
·        Incident
·        Degree (derajat), indegree dan outdegree
·        Indegree sebuah simpul pada graph berarah
·        Outdegree sebuah simpul pada graph berarah

3.   apa yang dimaksud dengan graph berarah,tidak berarah,dan berbobot!
·        Graf berarah adalah graf yang setiap sisinya diberikan orientasi arah disebut sebagai graf berarah.
·        Graf tidak berarah yaitu graf yang setiap sisinya tidak mempunyai arah anak panah tetapi memiliki bobot pada setiap sisinya.
·        graf berbobot merupakan suatu graf tanpa busur parallel dimana setiap busurnya berhubungan dengan suatu bilangan riil tak negatif yang menyatakan bobot busur (w(a)) tersebuT.

4.   buatlah satu contoh program dari graph berarah!
/**
* class Graph
* @author Jim
* @version 1.0
*/
public class Graph
{
protected HashMap adjacencyMap;
/**
* insialisasi Graf, membuat adjacency map
*/
public Graph()
{
adjacencyMap = new HashMap()
}
/**
* Memeriksa apakah Graf mengandung simpul
*
*@return true – jika tidak mengandung simpul kosong.
*/
public boolean isEmpty()
{
return adjacencyMap.isEmpty();
}
/**
* Mengembalikan jumlah simpul induk dalam graf
*/
public int size()
{
return adjacencyMap.size();
}
/**
* Mengembalikan jumlah sisi dalam graf
*/
public int getEdgeCount()
{
int count = 0;
for (inti=0;i<adjacencyMap.CAPACITY;i++){
if (adjacencyMap.keys[i] != null){
LinkedList edges = (LinkedList)
adjacencyMap.get(adjacencyMap.keys[i]);
count += edges.size();
}
}
return count;
}
/**
* Menambahkan sebuah objek sebagai simpul
* @param vertex – the specified object
* @return true – jika berhasil ditambahkan
*/
public boolean addVertex (Object vertex)
{
if (adjacencyMap.containsKey(vertex))
return false;
adjacencyMap.put (vertex, new
LinkedList());
return true;
}
/**
* Menambahkan sisi, dan simpul jika belum ada dalam graf
* @param v1 – simpul awal mula sisi
* @param v2 – simpul akhir dari sisi
* @return true – jika sisi berhasil ditambahkan ke dalam graf
*/
public boolean addEdge (Object v1, Object v2)
{
addVertex (v1); addVertex (v2);
LinkedList l = (LinkedList)
adjacencyMap.get(v1);
l.add(v2);
return true;
}
}
Untuk memberikan gambaran singkat tentang struktur data graf ini, akan ditunjukan bagaimana membentuk draf seperti gambar 2 dengan menggunakan fungsi dalam struktur data graf di atas.
/*
*Contoh implementasi ADT graf
* new instance, bentuk objek graph1 sebagai graph
*/
Graph graph1 = new Graph();
/*
* gunakan fungsi addEdge untuk menambah simpul-simpul ke dalam graf sesuai dengan  hubungan ketetanggaan antar simpul
*/
graph1.addEdge(“Achorage”,”Billings”);
graph1.addEdge(“Achorage”,”Corvalis”);
graph1.addEdge(“Achorage”,”Edmonton”);
graph1.addEdge(“Billings”,”Denver”);
graph1.addEdge(“Billings”,”Edmonton”);
graph1.addEdge(“Corvalis”,”Denver”);
graph1.addEdge(“Denver”,”Edmonton”);
graph1.addEdge(“Denver”,”Flagstaff”);
graph1.addEdge(“Flagstaff”,”Denver”);
graph1.addEdge(“Flagstaff”,”Houston”);
graph1.addEdge(“Grand Rapids”,”Houston”);

5.   buatlah satu contoh kasus graph!


Senin, 28 Desember 2015

TUGAS 14 (GRAF)

1.   Jelaskan pegertian Graf !
Jawab :
Graph digunakan untuk merepresentasikan objek-objek diskrit  dan hubungan antara objek-objek tersebut.

2.   Sebutkan 5 contoh terminologi Graf dan jelaskan !
Jawab :
a)   Ketetanggaan (Adjacent)
Dua buah simpul dikatakan bertetangga bila keduanya terhubung langsung.
b)   Simpul Terpencil (Isolated Vertex)
Simpul yang tidak mempunyai sisi yang bersisian dengannya.
c)    Graf  Kosong (null graph atau empty graph)
Graf yang himpunan sisinya merupakan himpunan kosong (Nn).
d)   Derajat (Degree)
Derajat suatu simpul adalah jumlah sisi yang bersisian dengan simpul tersebut.
e)   Lintasan (Path)
Lintasan yang panjangnya n dari simpul awal v0 ke simpul tujuan.  

3.   Jelaskan pengertian dari beberapa Graf khusus
Jawab :
v Graf Lengkap (Complete Graph)
Graf sederhana yang setiap simpulnya mempunyai sisi ke semua simpul lainnya.
v Graf Lingkaran
Graf sederhana yang setiap simpulnya berderajat 2.
v Graf Teratur (Regular Graphs)
Graf yang simpulnya mempunyai derajat yang sama.
v Graf Bipartite (Bipartite Graph)
Graf G yang himpunan simpulnya dapat dipisah menjadi 2 himpunan bagian V1  dan V2sedemikian sehingga setiap sisi pada G menghubungkan sebuah simpul tersebut.

4.   Representasi Graf memiliki 3 unsur. Buatlah 1 contoh dari masing-masing unsur tersebut !
Jawab :
a)   Matriks Ketetanggaan (adjacency matrix)



Matriks Bersisian (incidency matrix


)
b)   Senarai Ketetanggaan (adjacency list)



5.   Gambarkan 2 buah graf yang isomorfik dengan graf teratur berderajat 3 yang mempunyai 8 buah  simpul !

Jawab :

TUGAS 13 (TREE)

1.   Apa pegertian tree
Jawab :
Kumpulan kode yang saling terhubung satu sama laindalam suatu  kesatuan yang membentuk layakya struktur sebuah pohon.

2.   Jelaskan pegertian Binary Tree
Jawab :
merupakan salah satu bentuk struktur data tidak linear yang menggambarkanhubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen.

3.   Buatlah program tree
Jawab :





4.    sebutkan Jenis-jenis Binary Tree dan pegertian nya
Jawab :
*     Full Binary Tree
Binary Tree yang tiap nodenya (kecuali leaf) memiliki dua child dan tiap subtree harus mempunyai panjang path yang sama.

*     Complete Binary Tree
 Mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path yang berbeda. Node kecuali leaf memiliki 0 atau 2 child.

*     Skewed Binary Tree
Akni Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu child
5.    sebutkan Langkah-Langkahnya Traverse
Jawab :
¨       PreOrder : Cetak isi node yang dikunjungi, kunjungi Left Child, kunjungi Right Child.
¨       InOrder : Kunjungi Left Child, Cetak isi node yang dikunjungi, kunjungi Right Child.

¨       PostOrder : Kunjungi Left Child, Kunjungi Right Child, cetak isi node yang dikunjungi.

Senin, 21 Desember 2015

TUGAS 12 (STUKTUR DATA PROGRAM)

1.   Buatlah satu contoh tentang insertion sort
Jawab :
      




2.   Apa perbedaan exchange sort dan bubble sort
Jawab :
dalam hal bagaimana membandingkan antar elemen-elemennya :
         Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu.  Jadi ada elemen yang selalu menjadi elemen pusat (pivot).
         Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya, kemudian elemen tersebut itu akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya

3.   buatlah lima contoh tentang metode pengurutan data
Jawab :
1)   Pengurutan berdasarkan perbandingan (comparison-based sorting)
         Bubble sort, exchange sort
2)   Pengurutan berdasarkan prioritas (priority queue sorting method)
         Selection sort, heap sort (menggunakan tree)
3)   Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method)
         Insertion sort, tree sort
4)   Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method)
         Quick sort, merge sort
5)   Pengurutan berkurang menurun (diminishing increment sort method)
         Shell sort (pengembangan insertion)


4.   Apa yang dimaksud dengan pengurutan (sorting)
Jawab :
adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu.

5.   Buatlah contoh program selection sort
Jawab :
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>
main()
{
int x[5];
int i;
int temp;
int minindex;
int j;

clrscr();
cout<<" >> Welcome To The Program Selection Sort << \n" <<endl;
cout<<"masukkan nilai x :\n";
for(i=0; i<5; i++)
{
cout<<"x["<<i<<"] = ";cin>>x[i];
}
cout<<"\n data sebelum di sort :";
for(i=0; i<5;i++)
{
cout<<setw(4)<<x[i];
}
for(i=0; i<5-1; i++) //perulangan iterasi
{
minindex=i;
for(j=i+1; j<5; j++) //perulangan membandingkan data
{
if(x[minindex]>x[j])
{
minindex=j;
}
}
temp=x[i];
x[i]=x[minindex];
x[minindex]=temp;
}
cout<<"\n\nData setelah di sort :";
for(i=0; i<5; i++)
{
cout<<setw(4)<<x[i];
}
                           
getch();
}