Minggu, 18 April 2010

Minimum spanning Tree

2 komentar
Graph : kumpulan dua himpunan yaitu himpunan titik ( vertex / simpul / node ) dan kumpulan dari garis ( edge )

Tree : graph tak berarah yang terhubung dan tidak mengandung sirkuit.

Sirkuit : simpul awal = simpul akhir


Contoh : Pandang sebuah graph sebagai berikut;




















Algoritma Kruskall


Dasar pembentukan algoritma Kruskal berasal dari analogi growing forest. Growing forest maksudnya adalah untuk membentuk pohon merentang minimum T dari grafG adalah dengan cara mengambil satu per satu sisi dari graf G dan memasukkannya ke dalam pohon yang telah terbentuk sebelumnya. Seiring dengan berjalannya iterasi untuk setiap sisi, maka forest akan memiliki pohon yang semakin sedikit. Oleh sebab itu, maka analogi ini disebut dengan growing forest. Algoritma Kruskal akan terus menambahkan sisi – sisi ke dalam hutan yang sesuai hingga akhirnya tidak akan ada lagi forest dengan, melainkan hanyala

h sebuah pohon yang merentang minimum.Soal diatas dapat dijawab dengan menggunakan Algoritma Kruskall seperti ditunjukkan dibawah ini :.

-------Edge----- Cost

  1. ( 1,2 )----- 10
  2. ( 3,6 )----- 15
  3. ( 4,6 )----- 20
  4. ( 2,6 )----- 25
  5. ( 1,4 )----- 30
  6. ( 3,5 )----- 35



Maka Spanning Tree- nya adalah




















Sehingga total costnya ialah 105



Soal : Buatlah Minimum Spanning Tree + Total Cost !!











Jawab :


Gunakan Algoritma Kruskall

--------------Edge-----Cost----

  1. -----( C,D )----- 2
  2. ------( A,F )----- 4
  3. ------( C,E )----- 4
  4. ------( B,C )----- 5
  5. ------( A,C )----- 6

Maka Spanning Tree-nya adalah :

















Sehingga Total Costnya adalah 21







Referensi : http://webmail.informatika.org/~rinaldi/Matdis/2009-2010/Makalah0910/MakalahStrukdis0910-052.pdf

















Selasa, 13 April 2010

TEKNIK SEARCHING

0 komentar

Dalam pencarian data juga terdapat beberapa jenis algoritma, tujuan dari adanya banyak algoritma yang di temukan adalah karena memiliki keuntungan-keuntungan tersendiri, seperti lebih cepatnya bila mengolah data yang jumlahnya lebih dari juta data, ada yang lebih efisien dengan jumlah kurang dari jutaan. serta ada pula yang tidak perlu untuk mengurutkan data terlebih dahulu, tetapi memakan waktu lebih lama. Sehingga itu diperlukan teknik SEARCHING sehingga memudahkan pekerjaan kita.

Searching adalah salah satu pekerjaan yang paling mendasar dalam bidang perkomputeran . Searching digunakan dalam setiap tindakan yang perlu untuk mengetahui bilamana sebuah elemen tercantum dalam daftar atau lebih umum lagi, pencarian ulang dari file informasi yang berhubungan dengan unsur tersebut .Macam – macam teknik searching adalah :

Line Search. Teknik searching ini dibuat dengan cara melakukan pengecek'an 1 persatu, yaitu antara data yang di cari dengan kumpulan data yang di miliki, Keuntungan metode ini adalah kita tidak perlu mengurutkan data yang ada, bila mencari data pada kumpulan data yang tidak urut hanya terdapat metode ini yang dapat di lakukan. listing program (open in Inrternet eplorer only)

Binnary Search. Teknik ini hanya dapat digunakan hanya pada kumpulan data yang sudah di urutkan, karena teknik ini melakukan pencarian dengan mencari data pada index yang tengah, apakah lebih besar/lebih kecil/sama dengan. bila hasil sama dengan maka nilai yang di cari telah di temukan. bila lebih kecil/lebih besar maka akan di buang setengah data dari yang salah, dan mencari dari indeks yang tengah dari sisanya. demikian samapi data ditemukan atau tidak di temukan. listing program (open in Inrternet eplorer only)

Fibonachi Search. Teknik ini hanya dapat digunakan hanya pada kumpulan data yang sudah di urutkan, karena teknik ini melakukan pencarian dengan mencari data melalui pola bilangan fibonachi. Bila pada binnary search pembandingnya adalah nilai pada index tengahnya jumlah data, pada fibonachi search berbeda yaitu: bilangan fibonachi, yang bilangan fibonachinya terdekat dengan jumlah data tetapi tidak lebih besar dari jumlah data yang akan di proses. Bilangan fibonachi itu di jumlahkan dengan batas paling awal data dikurangi 1. Contohnya: jumlah data yang akan di cari adalah 15, maka batas paling bawah adalah 1 dan batas paling akhir=15 dan index pembandingnya= 13(nilai awal + dijumlahkan Bilangan fibonachi - 1) karena bilangan fibonachi terdekat dengan 15 (data ke 1- data ke 15) adalah 13 (1,2,3,5,8,13,21,34.....), bila data yang di cari lebih besar dari bilangan indeks ke tengahnya maka. batas paling bawah= tetap, batas akhir nilai tengah-1, bila data yang dicari lebih kecil maka batas bawah = nilai tengah +1 dan batas akhir tetap, sedangkan nilai tengahnya memakai fungsi tadi.

Referensi : http://alpro.awardspace.com/tehnik.html

http://elearning.gunadarma.ac.id/docmodul/pengantar_analisis_algoritma/bab8_teknik_searching_secara_paralel.pdf

TEKNIK SORTING

0 komentar

Dalam penyelesaian suatu masalah pasti terdapat banyak cara atau solusi-solusi yang dapat dilakukan, seperti halnya pembuatan program memiliki banyak tehnik atau algoritma yang dapat di gunakan salah satunya untuk kebutuhan SORTING atau PENGURUTAN kumpulan data-data. terdapat 4 algoritma atau tehnik dalam melakukan sorting.

Straight Selection Sort. teknik sorting ini dibuat dengan cara melakukan pengecek'an 1 persatu, bila kita akan mengurutkan secara ascending maka kita lakukan pengecek'an nilai tempat yang pertama (index pertama pada array) bila lebih kecil daripada index berikutnya (index 1 dengan index 2, index 1 dengan index 3, ..... index 1 dengan index terakhi) maka kita lakukan pertukaran nilai pada array index tersebut. proses ini dilakukan terus menerus sampai pada pengecekan index terakhir - 1 dengan nidex terakhir. listing program (open in Inrternet eplorer only)

Selection Sort.Teknik sorting ini dibuat dengan cara melakukan pengecek'an 1 persatu, bila kita akan mengurutkan secara ascending maka kita lakukan pengecek'an nilai tempat yang pertama (index pertama pada array)kita bandingkan dengan semua nilai yang ada kita cari nilai minimalnya. lalu simpan index/ letak nilai minimum itu di temukan, setelah pengecekan selesai tukar index awal pengecekan dengan nilai minimum yang telah di simpan tadi. Proses ini dilakukan terus menerus sampai pada pengecekan index terakhir min 1 dengan index terakhir. beda dengan streith selection sort adalah dengan teknik ini melakukan pertukaran nilai lebih sedikit, hanya jumlah data - 1 pertukaran. jadi waktu untuk melakukan proses sorting lebih cepat.listing program (open in Inrternet eplorer only)

Bubble Sort. Teknik ini dilakukan degan pola membawa nilai terbesar menjadi nilai index terakhir array. jadi sistem ini melakukan pengecekan nilai 1 dengan 2, lalu 2 dengan 3 samapai dengan data terakhir, bila nilai index yang lebih kecil lebih besar maka akan dilakukan pertukaran. proses ini dilakuan hingga jumlah data - 1. listing program (open in Inrternet eplorer only)

Modified Bubble Sort. Teknik ini dilakukan degan pola membawa nilai terbesar menjadi nilai index terakhir array. Jadi sistem ini melakukan pengecekan nilai 1 dengan 2, lalu 2 dengan 3 samapai dengan data terakhir, bila nilai index yang lebih kecil lebih besar maka akan dilakukan pertukaran. proses ini dilakuan hingga jumlah data dikurangi 1 atau sampai program tidak melakukan pertukaran. jadi waktu untuk melakukan proses sorting lebih cepat

Referensi : http://alpro.awardspace.com/tehnik.html

Rabu, 07 April 2010

Algoritma

0 komentar
1.1. Apakah Itu Algoritma

Ditinjau dari asal-usul katanya, kata Algoritma sendiri mempunyai sejarah
yang aneh. Orang hanya menemukan kata algorism yang berarti proses
menghitung dengan angka arab. Anda dikatakan algorist jika Anda
menghitung menggunakan angka arab. Para ahli bahasa berusaha
menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya
para ahli sejarah matematika menemukan asal kata tersebut yang berasal
dari nama penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad
Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi
Algorism. Al-Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal-
Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book of
restoration and reduction). Dari judul buku itu kita juga memperoleh akar
kata “Aljabar” (Algebra). Perubahan kata dari algorism menjadi algorithm
muncul karena kata algorism sering dikelirukan dengan arithmetic,
sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan
angka Arab sudah menjadi hal yang biasa, maka lambat laun kata algorithm
berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara
umum, sehingga kehilangan makna kata aslinya. Dalam bahasa Indonesia,
kata algorithm diserap menjadi algoritma.

1.1.1. Definisi Algoritma
“Algoritma adalah urutan langkah-langkah logis penyelesaian masalah
yang disusun secara sistematis dan logis”. Kata logis merupakan kata kunci
dalam algoritma. Langkah-langkah dalam algoritma harus logis dan harus
dapat ditentukan bernilai salah atau benar.

Dalam beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk
melakukan pekerjaan tertentu. Pertimbangan dalam pemilihan algoritma
adalah, pertama, algoritma haruslah benar. Artinya algoritma akan memberikan
keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak
peduli sebagus apapun algoritma, kalau memberikan keluaran yang salah,
pastilah algoritma tersebut bukanlah algoritma yang baik.

Pertimbangan kedua yang harus diperhatikan adalah kita harus mengetahui
seberapa baik hasil yang dicapai oleh algoritma tersebut. Hal ini penting
terutama pada algoritma untuk menyelesaikan masalah yang memerlukan
aproksimasi hasil (hasil yang hanya berupa pendekatan). Algoritma yang
baik harus mampu memberikan hasil yang sedekat mungkin dengan nilai
yang sebenarnya.

Ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari 2
hal yaitu efisiensi waktu dan memori. Meskipun algoritma memberikan
keluaran yang benar (paling mendekati), tetapi jika kita harus menunggu
berjam-jam untuk mendapatkan keluarannya, algoritma tersebut biasanya
tidak akan dipakai, setiap orang menginginkan keluaran yang cepat. Begitu
juga dengan memori, semakin besar memori yang terpakai maka semakin
buruklah algoritma tersebut.

Dalam kenyataannya, setiap orang bisa membuat algoritma yang berbeda
untuk menyelesaikan suatu permasalahan, walaupun terjadi perbedaan
dalam menyusun algoritma, tentunya kita mengharapkan keluaran yang
sama. Jika terjadi demikian, carilah algoritma yang paling efisien dan cepat.

1.1.2. Beda Algoritma dan Program

Program adalah kumpulan pernyataan komputer, sedangkan metode dan
tahapan sistematis dalam program adalah algoritma. Program ditulis dengan
menggunakan bahasa pemrograman. Jadi bisa disebut bahwa program
adalah suatu implementasi dari bahasa pemrograman.

Beberapa pakar memberi formula bahwa:

Program = Algoritma + Bahasa (Struktur Data)

Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat
pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data
yang tepat akan membuat program menjadi kurang baik, demikian juga
sebaliknya.

Pembuatan algoritma mempunyai banyak keuntungan di antaranya:
1. Pembuatan atau penulisan algoritma tidak tergantung pada bahasa
pemrograman manapun, artinya penulisan algoritma independen dari
bahasa pemrograman dan komputer yang melaksanakannya.
2. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa
pemrograman.
3. Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama
karena algoritmanya sama.

Beberapa hal yang perlu diperhatikan dalam membuat algoritma:
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah.
Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah
dimengerti dan dipahami.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti
notasi bahasa pemrograman. Notasi yang digunakan dalam menulis
algoritma disebut notasi algoritmik.
3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik
sendiri. Hal ini dikarenakan teks algoritma tidak sama dengan teks
program. Namun, supaya notasi algoritmik mudah ditranslasikan ke
dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi
algoritmik tersebut berkorespondensi dengan notasi bahasa
pemrograman secara umum.
4. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu
pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh
komputer. Agar dapat dijalankan oleh komputer, pseudocode dalam
notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam
notasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orang
yang menulis program sangat terikat dalam aturan tata bahasanya dan
spesifikasi mesin yang menjalannya.
5. Algoritma sebenarnya digunakan untuk membantu kita dalam
mengkonversikan suatu permasalahan ke dalam bahasa pemrograman.
6. Algoritma merupakan hasil pemikiran konseptual, supaya dapat
dilaksanakan oleh komputer, algoritma harus ditranslasikan ke dalam
notasi bahasa pemrograman. Ada beberapa hal yang harus diperhatikan
pada translasi tersebut, yaitu:

a. Pendeklarasian variabel
Untuk mengetahui dibutuhkannya pendeklarasian variabel dalam
penggunaan bahasa pemrograman apabila tidak semua bahasa
pemrograman membutuhkannya.
b. Pemilihan tipe data
Apabila bahasa pemrograman yang akan digunakan membutuhkan
pendeklarasian variabel maka perlu hal ini dipertimbangkan pada
saat pemilihan tipe data.
c. Pemakaian instruksi-instruksi
Beberapa instruksi mempunyai kegunaan yang sama tetapi masing-
masing memiliki kelebihan dan kekurangan yang berbeda.
d. Aturan sintaksis
Pada saat menuliskan program kita terikat dengan aturan sintaksis
dalam bahasa pemrograman yang akan digunakan.
e. Tampilan hasil
Pada saat membuat algoritma kita tidak memikirkan tampilan hasil
yang akan disajikan. Hal-hal teknis ini diperhatikan ketika
mengkonversikannya menjadi program.
f. Cara pengoperasian compiler atau interpreter.
Bahasa pemrograman yang digunakan termasuk dalam kelompok
compiler atau interpreter.


Referensi :

http://usupress.usu.ac.id/files/Algoritma%20dan%20Pemrograman;%20Teori%20dan%20Praktik%20dalam%20Pascal%20Edisi%20Kedua_Final.pdf

STRUKTUR DATA

0 komentar

Struktur data menyangkut susunan fisik data dalam komputer. Struktur data menyerupai beberapa bentuk teknik kom presi data

– Agar penyim panan lebih efisien

– Agar tersusun lebih terurut

– Agar data retrieval lebih efektif

Struktur data dibagi atas :

a. Struktur data linier

b. Struktur data non-linier

  1. Struktur Data Linier

Struktur data linier adalah struktur data yang menggam barkan hubungan tentang elemen-elemen yang berdekatan. Terdiri dari :

¢ ARRAY : a. dimensi satu (vektor matriks)

b. dimensi dua (matriks)

c. multi dimensi

Array (larik) adalah tipe terstruktur yang terdiri dari sejumlah komponen -

komponen dengan tipe yang sama. Banyaknya komponen dalam satu larik adalah tetap dan lokasi dalam suatu larik ditunjukkan oleh suatu INDEKS.

Yang penting dalam array adalah pengalam atan memori dan digunakan pengalam atau secara statik.

KARAKTERISTIK pemakaian array :

¢ jum lah elem en array terbatas

¢ sem ua elem en array bisa diakses secara acak

¢ panjang elem en sam a.

Contoh : int A[10 ];

float B [5];

Aplikasi penggunaan array diantaranya adalah

a. stack (tumpukan)

Adalah suatu list yang semua operasi penambahan (insertion) dan penghapusan

(deletion) elemennya dilaksanakan pada satu ujung atas (TOP).

Elemen pertama yang akan dihapus adalah elemen terakhir yang disisipkan, sehingga disebut sebagai “Last In First Out” (LIFO ).

b. queue (antrian)

Prinsip : FIFO (First In First Out) atau FCFS (First Com e First Serve), yang lebih awal masuk akan dilayani terlebih dahulu .

c. deque (antrian dengan 2 pintu)


¢ LINKED LIST (LIST BERKAIT ) :

a. linear singly linked list

b. linear doubly linked list

c. circular singly linked list

d. circular doubly linked list

Aplikasi linked list pada struktur data linier diantaranya :

a. linked stack

b. linked queue

Sedang multi linked list banyak digunakan pada struktur data non-linier yaitu untuk representasi tree maupun graph.

PENGELOLAAN MEMORI

Dapat secara STATIS atau DINAMIS.

a. Secara STATIS : menem pati lokasi memori yang tetap (fixed size),tidak dapat dikembangkan atau diciutkan.

Misal : array

alamat memori menjadi kunci array

b. Secara DINAMIS : menem pati lokasi memori dimana dapat dikem bangkan atau diciutkan sesuai dengan kebutuhan. Pengelolaan alamat dinamis (dynamic address) ditunjukkan oleh pointer.

  1. Struktur Data non- Linier

Terdiri dari :

¢ Struktur pohon

Definisi Pohon adalah : susunan dari satu atau lebih simpul (node) yang terdiri dari satu simpul khusus yang disebut akar (root) sedang sisanya membentuk subtree dari akar.


DERAJAT (DEGREE) SUATU POHON : adalah derajat maksimum dari suatu simpul dalam pohon.


NENEK MOYANG DARI SUATU SIMPUL ADALAH : adalah seluruh simpul – simpul yang ada sepanjang lintasan dari akar sampai simpul tersebut.


KEDALAM AN (HEIGHT atau DEPTH ) : dari suatu pohon ditentukan oleh level maksimum dari simpul dalam pohon.


HUTAN (FOREST) : adalah susunan dari beberapa pohon .

Ada 2 cara untuk menyatakan struktur pohon,yaitu dengan :

1. gambar

2. daftar (list)

¢ Graph

Dinyatakan dalam suatu fungsi G = (V , E ) dim ana

V = kum pulan sim pul/ vertex/ node

E = kum pulan busur / edge/ arc

Tiap busur pasti menghubungkan 2 simpul. Ada 2 macam graph

1. Graph tak terarah (Undirected graph)

2. Graph terarah (Directed graph)

Referensi :

http://www.unsri.ac.id/fasilkom/old_version/dosen/jaidan/materi/Bahan%20Kuliah%20Struktur%20Data.pdf

http://lecturer.eepis-its.edu/~arna/GIS/04%20-%20Tipe%20Data%20dan%20Struktur%20Data.pdf

http://webdosen.bl.ac.id/dosen/930011/Kuliah/strdata.PDF

 
footer