ALGORITMA PENCARIAN

Senin, 03 Januari 2011

ALGORITMA PENCARIAN BINER (BINARY SEARCH)

yaitu memperkecil jumlah operasi pembandingan yang harus dilakukan antara data yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar ukurannya.
Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada kemungkinan data tidak ditemukan).
Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut, misalkan terurut menaik.


contoh program nya :


//Pencarian Binari
#include
#include
int data[10] = {1,3,4,7,12,25,40,65,78,90}; //variabel global
int binary_search(int cari)
{
int l,r,m;
int n = 10;
l = 0;
r = n-1;
int ketemu = 0;
while(l<=r && ketemu==0)
{
m = (l+r)/2;
if( data[m] == cari )
ketemu = 1;
else
if (cari < data[m])
r = m-1;
else l = m+1;
}
if(ketemu == 1) return 1; else return 0;
}
void main()
{
clrscr();
int cari,hasil;
cout<<”masukkan data yang ingin dicari = “;
cin>>cari;
hasil = binary_search(cari);
if(hasil == 1)
{
cout<<”Data ada!”<}
else
if(hasil == 0)
cout<<”Data Tidak ada!”<getch();
}


ALGORITMA PENCARIAN SEKUENSIAL

“Sequential search atau Pencarian sekuensial” bisa disebut dengan pencarian linear yang merupakan model pencarian yang paling simpel dan sederhana banget deh yang dapat dilakukan terhadap suatu kumpulan data. Suatu tekhnik pencarian dalam array (1 dimensi) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu.
Biar anda lebih paham secara konsep, penjelasannya adalah sebagai berikut :
Keunggulan dari pencarian sekuensial ini adalah jika data yang dicari terletak di indeks array terdepan maka waktu dalam pencarian nya sangat cepat, dalam artian waktu yang minim sekali. Keburukannya adalah kalau jika data indeks array nya yang dicari paling belakang, maka waktu yang dicari tuh lama banget (lemot).

contoh programnya : 
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int a[10];
    int b[10];
    int k,i,j ;
    int c ;
    bool ketemu ;
   
    for(i=1;i<=10;i++){
                       printf("input sepuluh angka : "); scanf("%d",&a[i]);
                       }
                       printf("input angka yang dicari : "); scanf("%d",&c);
    j=1;
    k=1;
    ketemu=false;
    while(j<=10){
                 if(a[j]==c){
                            ketemu=true;
                            b[k]=j;
                            k=k+1;
                            }
                 j=j+1;
                 }
                
                 if(ketemu==true){
                                 printf("angka %d ditemukan di indeks  \n",c);
                                 for(i=1;i<=k-1;i++){
                                                     printf("%d ",b[i]);
                                                     }
                 }else{
                      printf("angka tidak ditemukan\n");
                      }
                    
    system("PAUSE");
    return EXIT_SUCCESS;
}

ALGORITMA PENCARIAN POHON

Algoritma pencarian pohon adalah jantung dari teknik-teknik pencarian. Algoritma tersebut mencari node dari pohon, terlepas apakah pohon tersebut eksplisit atau implisit (dibangkitkan saat pengerjaan). Prinsip dasarnya adalah sebuah node diambil dari sebuah struktur data, suksesornya diperiksa dan ditambahkan pada struktur data. Dengan memanipulasi struktur data, pohon dieksplorasi dalam urutan yang berbeda-beda, dieksplore dari satu tingkat ke tingkat berikutnya (pencarian Breadth-first) atau mengunjungi node pucuk terlebih dahulu kemudian lacak balik/backtracking (pencarian Depth-first). Contoh lain dari pencarian pohon antara lain [[pencarian iterative deepening depth== Pencarian uninformed ==
Sebuah algoritma pencarian uninformed adalah algoritma yang tidak mempertimbangkan sifat alami dari permasalahan. Oleh karena itu algoritma tersebut dapat diimplementasikan secara umum, sehingga dengan implementasi yang sama dapat digunakan pada lingkup permasalahan yang luas, hal ini berkat abstraksi. Kekurangannya adalah sebagian besar ruang pencarian adalah sangat besar, dan sebuah pencarian uninformed(khususnya untuk pohon) membutuhkan banyak waktu walaupun hanya untuk contoh yang kecil. Sehingga untuk mempercepat proses, kadang-kadang hanya pencarian informed yang dapat melakukannya.



0 komentar:

Posting Komentar