Blogroll

SELAMAT DATANG DI BLOG RISKI KURNIAWAN

Algoritma Runut-balik (Backtracking)


·       Runut-balik (backtracking) adalah algoritma yang berbasis pada DFS untuk mencari solusi persoalan secara lebih mangkus.

·       Runut-balik, yang merupakan perbaikan dari algoritma brute-force, secara sistematis mencari solusi persoalan di antara semua kemungkinan solusi yang ada.

·       Dengan metode runut-balik, kita tidak perlu memeriksa semua kemungkinan solusi yang ada. Hanya pencarian yang mengarah ke solusi saja yang selalu dipertimbangkan. Akibatnya, waktu pencarian dapat dihemat.

·       Runut-balik merupakan bentuk tipikal  dari algoritma rekursif.

·       Saat ini algoritma runut-balik banyak diterapkan untuk program games (seperti permainan tic-tac-toe, menemukan jalan keluar dalam sebuah labirin, catur, dll) dan masalah-masalah  pada bidang kecerdasan buatan (artificial intelligence).



Properti Umum Metode Runut-balik

1.   Solusi persoalan.
Solusi dinyatakan sebagai vektor dengan n-tuple:
    X = (x1, x2, …, xn),  xi Î himpunan berhingga Si .

Mungkin saja S1 = S2 = … = Sn.

Contoh: Si = {0, 1},
           xi = 0 atau 1

2.   Fungsi pembangkit nilai xk
Dinyatakan sebagai:
    T(k)
T(k) membangkitkan nilai untuk xk, yang merupakan komponen vektor solusi. 

3.   Fungsi pembatas (pada beberapa persoalan fungsi ini dinamakan fungsi kriteria)
Dinyatakan sebagai
      B(x1, x2, …, xk)
Fungsi pembatas menentukan apakah (x1, x2, …, xk)  mengarah ke solusi. Jika ya, maka pembangkitan nilai untuk xk+1 dilanjutkan, tetapi jika tidak, maka (x1, x2, …, xk) dibuang dan tidak dipertimbangkan lagi dalam pencarian solusi.

Pengorganisasian Solusi

·       Semua kemungkinan solusi dari persoalan disebut ruang solusi (solution space).

·       Jika xi Î Si, maka  S1 ´ S2 ´´ Sn  disebut ruang solusi.

·       Jumlah anggota di dalam ruang solusi adalah | S1| × | S2| ×× | Sn |.


·       Tinjau persoalan Knapsack 0/1 untuk n = 3. Solusi persoalan dinyatakan sebagai vektor (x1, x2, x3) dengan xi Î {0,1}.  Ruang solusinya adalah

{0,1} ´ {0,1} ´ {0,1} = {(0, 0, 0),  (0, 1, 0), (0, 0, 1),
   (1, 0, 0), (1, 1, 0), (1, 0, 1),
           (0, 1, 1), (1, 1, 1)}.   

·       Pada persoalan Knapsack 0/1 dengan n = 3 terdapat 2n = 23 = 8 kemungkinan solusi,  yaitu:

        (0, 0, 0), (0, 1, 0), (0, 0, 1),
(1, 0, 0), (1, 1, 0), (1, 0, 1),
(0, 1, 1), dan (1, 1, 1).

·       Penyelesaian secara exhaustive search adalah dengan menguji setiap kemungkinan solusi.

·       Ruang solusi diorganisasikan ke dalam struktur pohon.

·       Tiap simpul pohon menyatakan status (state) persoalan, sedangkan sisi (cabang) dilabeli dengan nilai-nilai xi.

·       Lintasan dari akar ke daun menyatakan solusi yang mungkin.

·       Seluruh lintasan dari akar ke daun membentuk ruang solusi. Pengorganisasian pohon ruang solusi diacu sebagai pohon ruang status (state space tree).

·       Tinjau kembali persoalan Knapsack 1/0 untuk n = 3. Ruang solusinya 



Gambar 7.1  Ruang solusi untuk persoalan Knapsack 0/1 dengan n = 3
Prinsip Pencarian Solusi dengan Metode Runut-balik

1.   Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan pembentukan yang dipakai adalah mengikuti aturan pencarian mendalam (DFS). Simpul-simpul yang sudah dilahirkan dinamakan simpul hidup (live node). Simpul hidup yang sedang diperluas dinamakan simpul-E (Expand-node).

2.   Tiap kali simpul-E diperluas, lintasan yang dibangun olehnya bertambah panjang. Jika lintasan yang sedang dibentuk tidak mengarah ke solusi, maka simpul-E tersebut “dibunuh” sehingga menjadi simpul mati (dead node). Fungsi yang digunakan untuk membunuh simpul-E adalah dengan menerapkan fungsi pembatas (bounding function). Simpul yang sudah mati tidak akan pernah diperluas lagi.

3.   Jika pembentukan lintasan berakhir dengan simpul mati, maka proses pencarian  diteruskan dengan membangkitkan simpul anak yang lainnya. Bila tidak ada lagi simpul anak yang dapat dibangkitkan, maka pencarian solusi dilanjutkan dengan melakukan runut-balik ke simpul hidup terdekat (simpul orangtua). Selanjutnya simpul ini menjadi simpul-E yang baru.

4.   Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul hidup untuk runut-balik.
Tinjau persoalan Knapsack 0/1 dengan instansiasi:
        n = 3
        (w1, w2, w3) = (35, 32, 25)
        (p1, p2, p3) = (40, 25, 50)
        M = 30

Solusi dinyatakan sebagai X = (x1, x2, x3), xi Î {0, 1}.
Fungsi pembatas:


(a)
(b)

Gambar 7.2 (a) Pohon dinamis yang dibentuk selama pencarian untuk persoalan Knapsack 0/1 dengan n = 3,
w = (35, 32, 25) dan p = (40, 25, 50)
(b) Penomoran ulang simpul-simpul sesuai urutan pembangkitannya

Solusi optimumnya adalah X = (0, 0, 1) dan F =  50.

Skema Umum Algoritma Runut-Balik

(a) Versi rekursif


procedure RunutBalikR(input k:integer)   
{Mencari semua solusi persoalan dengan metode runut-balik; skema rekursif
 Masukan: k, yaitu indeks komponen vektor solusi, x[k]
 Keluaran: solusi x = (x[1], x[2], …, x[n])    
}
Algoritma:
   for tiap x[k] yang belum dicoba sedemikian sehingga
        ( x[k]¬T(k)) and B(x[1], x[2], ... ,x[k])= true do
      if (x[1], x[2], ... ,x[k]) adalah lintasan dari akar ke daun
      then
        CetakSolusi(x)
      endif
      RunutBalikR(k+1)    { tentukan nilai untuk x[k+1]}
   endfor 


           
Pemanggilan prosedur pertama kali:  RunutBalikR(1) 














(b) Versi iteratif


procedure RunutBalikI(input n:integer)   
{Mencari semua solusi persoalan dengan metode runut-balik; skema iteratif.
 Masukan: n, yaitu panjang vektor solusi
 Keluaran: solusi x = (x[1], x[2], …, x[n])    
}
Delarasi:
   k : integer

Algoritma:
   k¬1
   while k > 0 do
      if (x[k] belum dicoba sedemikian sehingga x[k]¬T(k)) and
          (B(x[1], x[2], ... ,x[k])= true)
      then
         if (x[1],x[2],...,x[k]) adalah lintasan dari akar ke daun   
         then
           CetakSolusi(x)
         endif
         k¬k+1   {indeks anggota tupple berikutnya}
      else  {x[1], x[2], …, x[k] tidak mengarah ke simpul solusi }
         k¬k-1   {runut-balik ke anggota tupple sebelumnya}
      endif
   endwhile
  { k = 0 }



Pemanggilan prosedur pertama kali:  RunutBalikI(n)


·       Setiap simpul dalam pohon ruang status berasosiasi dengan sebuah pemanggilan rekursif.
·       Jika jumlah simpul dalam pohon ruang status adalah 2n atau n!, maka untuk kasus terburuk, algoritma runut-balik membutuhkan waktu dalam O(p(n)2n) atau O(q(n)n!), dengan p(n) dan q(n) adalah polinom derajat n yang menyatakan waktu komputasi setiap simpul.

     

TEKNIK BACKTRACKING


·        Pertama kali diperkenalkan oleh DH Lehmer (1950), dirumuskan dalam suatu algortima oleh RJ Walker (1960), aplikasinya dikembangkan oleh Golomb dan Baumert.
·        Dasar dari teknik Backtracking adalah searching.
·        Backtracking merupakan salah satu algotritma yang didasarkan pada pencarian ruang solusi.
·        Pencarian ruang solusi dalam algoritma backtracking menggunakan  teknik pencarian Depth First Search (DFS).
·        Masalah-masalah yang dapat diselesaikan dengan menggunakan algoritma Backtracking adalah :
Ø The 8-Queen Problem
Ø The 4-Queen Problem
Ø Sum of Subsets
Ø Graph Coloring
Ø Hamilton Cycles
Ø Knapsack Problem
Ø The Travelling Salesman Problem

Penyelesaian Sum of Subsets dengan Menggunakan Algoritma Backtracking
           
Masalah utama dari SUM of SUBSETS adalah jika terdapat n bilangan real dan ingin dihitung semua kombinasi yang mungkin dari himpunan bilangan tersebut. Kombinasi yang didinginkan adalahkombinasi yang jumlah seluruh elemen-elemennya sama dengan M (tertentu).

Algoritma Sum of Subset
procedure sumofsub(s,k,r)
global integer M,n
global real w(1:n)
real r,s 
integer k,j
x(k) = 1
if s + w(k) = M then
            print(x(j),j ß 1 to k)
            else
                        if s + w(k) + w(k+1) ≤ M then
                                    call sumofsub(s+w(k), k+1, r-w(k))
                        endif
endif
if s + r-w(k) ≥ M and s + w(k+1) ≤ M then
            x(k) ß 0
            call sumofsub(s, k+1, r-w(k))
endif
end sumofsub

Permasalahan :
Suatu himpunan terdiri dari 6 bilangan yaitu {5, 10, 12, 13, 15, 18} yang disusun secara tidak turun. Akan ditentukan himpunan-himpunan bagiannya yang jumlah seluruh elemennya adalah 30

Penyelesaian :
n=6
W(1:6) = {5,10,12,13,15,18}
M = 30
 Diasumsikan bahwa w(1) ≤ M dan ∑ w(i) ≥ M

Dalam hal ini w(1)= 5 ≤ 30 dan ∑ w(i) = 73 ≥ 30,
k-1
 
                                          
  j=1
 
dan nilai s diperoleh dari    ∑  w(j)x(j)
n
 
 

j=k
 
nilai r diperoleh dari ∑w(j)

                                    

Diperoleh himpunan penyelesaian :

A = {1,1,0,0,1} = 5+10+15=30
B = {1,0,1,1} = 5+12+13 = 30
C = {0,0,1,0,0} = 12+18 = 30

Penerapan Algoritma Backtracking (Runut-Balik) Dalam Permainan Teka-Teki Silang (TTS)

Teka Teki Silang atau disingkat  TTS adalah suatu permainan  di  mana  kita  harus mengisi ruang-ruang kosong (berbentuk  kotak putih) dengan huruf-huruf  yang membentuk sebuah kata berdasarkan petunjuk yang diberikan. Dalam permainan teka-teki silang terdapat papan permainan utama. Papan permainan sendiri terdiri atas kotak-kotak berwarna hitam dan putih.



Permainan ini memang cukup mudah untuk dimainkan, namun sayangnya untuk dapat membuat soal yang valid merupakan hal yang sulit. Perlu suatu program komputer untuk menyelesaikan permasalahan tersebut. Dalam pemecahan masalah, program komputer ini akan menggunakan algoritma backtracking (runut balik). Algoitma  runut-balik (backtracking) akan mampu memberikan hasil apakah deretan-deretan kotak jawaban   yang telah dibuat sudah cocok  dengan   deretan   jawaban   kata   yang disediakan.
Algoritma  backtracking  merupakan algoritma pencarian yang  berbasis pada DFS (Depth-First  Search) atau pencarian mendalam dengan tujuan mencari solusi permasalahan secara lebih praktis. Mekanisme penyelesaian dengan menggunakan backtracking berprinsip pada metode rekursif.
Algoritma  backtracking  dalam permainan ini akan digunakan untuk mengisi kotak-kotak permainan yang sebelumnya telah dibuat.  Kotak-kotak  ini bisa direpresentasikan dengan struktur  data matriks sehingga setiap kotak akan memiliki indeks. Indeks ini akan digunakan untuk melakukan pencarian kata yang cocok. Pada pengisian kata ke dalam kotak-kotak, pertama-tama program akan menentukan deretan kotak awal yang ngin diisi. Program  akan menghitung jumlah kotak pada deretan kotak tersebut kemudian akan mencari kata di dalam database (yang terdiri atas kumpulan  kata/jawaban)  yang memiliki  jumlah karakter sama dengan jumlah kotak tersebut.
Dalam pencarian data kata-kata mungkin akan terdapat beberapa kata yang cocok untuk dimasukkan kedalam  satu deretan kotak,  untuk  itu program akan memilih kata yang berada lebih awal dalam database kata. Langkah selanjutnya, program akan mengidentifikasi indeks pada deretan kotak yang terhubung dengan deretan  kotak lainnya. Program  akan  mencatat  dimana letak   hubungan   antar deretan kotak tersebut kemudian mencatat  indeks dan mengambil  karakter yang terdapat di dalamnya untuk dibandingkan kembali dengan deretan kata yang ada di dalam  database  kata. Jika kata yang dimasukkan berikutnya cocok maka pencarian akan dilanjutkan, namun jika   tidak   terdapat kata yang  cocok maka program akan mematikan kemungkinan jawaban berdasarkan pencarian tersebut dan program akan melakukan backtrack.
Backtrack  dilakukan   dengan   cara   program  akan  menghapus   kata   yang terakhir dimasukkan ke dalam deretan kotak, kemudian program akan mengganti kata  tersebut  dengan kata  lain yang  juga bisa diisikan ke dalam deretan kotak tersebut  dan kemudian program  akan  melakukan   pencarian ulang.   Langkah-langkah diatas akan terus dilakukan secara rekursif, sampai program menemukan solusi  dari  permasalahan  (seluruh kotak  terisi)  atau program  tidak menemukan solusi (tidak ada kemungkinan jawaban yang valid).
Dalam permainan teka-teki silang ini, algoritma Backtracking sudah bisa memberikan jawaban yang pasti sehingga algoritma Backtracking ini bisa dimplementasikan.  Selain itu algoritma Backtrack juga merupakan  algoritma yang sederhana namun cukup praktis dibandingkan dengan algoritma  brute force. Hal ini disebabkan karena pada prinsipnya, kita tidak perlu memeriksa semua  kemungkinan solusi yang ada.  Pencarian hanya mengarah pada solusi yang dipertimbangkan saja.
Meski demikian, algoritma backtracking masih memiliki kelemahan, yaitu hanya bisa   diaplikasikan terbatas  pada tipe permasalahan yang memiliki solusi yang dapat dicari secara sistematis dan bertahap. Terdapat masalah-masalah yang tidak bisa diselesaikan dengan menggunakan backtracking, misalnya menemukan suatu nilai yang diminta pada  tabel yang tidak terurut. Namun ketika algoritma ini  dapat  diaplikasikan, backtracking dapat  bekerja  jauh  lebih cepat dari  brute force karena jumlah  kandidat  solusi   yang dapat dibuang dengan backtracking cukup besar.

Tipe Data dalam PHP



Tipe data dalam PHP ada beberapa macam, yaitu :

Integer
Integer menyatakan tipe data bilangan bulat dengan jangkauan/range kira kira dari -2,147,483,648 hingga +2,147,483,647 pada platform 32 bit. Namun bila terdapat data diluar jangkauan tersebut, maka secara otomatis PHP akan mengkonversikannya ke dalam tipe data Floating Point.
Contoh :
$a=2;
$b=3;

Double/Float
Double/Floating point adalah tipe data yang berisi bilangan real atau pecahan. Jangkauan/range dari tipe data ini adalah antara 1.7e-308 sampai 1.7e+308. Data tersebut berbentuk desimal ataupun berbentuk pangkat.
Contoh :
$c = 4.352;
$b = 1.2e3;

String
String menyatakan tipe data teks (sederetan teks karakter yang tidak menyatakan bilangan). Dalam penulisannya, tipe data string menggunakan tanda kutip tunggal (' ') atau bisa juga menggunakan tanda kutip ganda (" ").
Contoh :
$nama="riski Blog";
$url='http://riski-one.blogspot.com';

Dari kedua cara penulisan dengan tanda kutip tersebut, ada perbedaan antara keduanya yaitu pada saat penggunaan variabel. Jika menggunakan tanda kutip tunggal, maka apabila sebuah variabel berisi tipe data string dan berisi tipe data yang lain, yang terjadi adalah nilai dari variabel tersebut akan dibaca atau tetap dicetak dengan nama variabel itu sendiri.
Contoh :
<?
$url="http://riski-one.blogspot.com";
$nama1="riski blog beralamat di $url";
$nama2='riski blog beralamat di $url';

echo "$nama1<br>";
echo "$nama2";
?>


Dalam browser, tampilan string yang menggunakan tanda kutip ganda, variabel $url akan dicetak isinya yaitu "http://riski-one.blogspot.com" namun berbeda dengan penggunaan tanda kutip tunggal, variabel $url akan dicetak begitu saja.

Array Dalam PHP

Array digunakan untuk mengidentifikasi variabel yang memiliki jumlah data yang lebih dari satu, tetap memiliki nama variabel yang sama.

Membuat dan Membaca Data Array


Ada beberapa cara yang bisa digunakan untuk membuat data array dalam program PHP. Cara yang pertama adalah memasukkan nilai dari array itu secara langsung seperti pada contoh berikut :

<?
$nama[0]="Doraemon";
$nama[1]="Nobita";
$nama[2]="Sizuka";
$nama[3]="Giant";
$nama[4]="Suneo";

echo "Nama nama tokoh dalam kartun doraemon adalah :<ul>";
for($i=0; $i<=4; $i++){
    echo "<li>$nama[$i]</li>";
}
echo "</ul>";
?>



Array Doraemon.jpg



Cara yang kedua adalah menggunakan fungsi array() seperti berikut ini :

<?
$nama=array("Doraemon","Nobita","Sizuka","Giant","Suneo");

echo "Nama nama tokoh urutan pertama adalah $nama[0] dan urutan terakhir adalah $nama[4]";
?>



Array Cara kedua.jpg



Beberapa fungsi lain yang berkaitan dengan pembacaan data array adalah :

Fungsi
Keterangan
key()
Digunakan untuk mengetahui angka indeks pada posisi pointer aktuf saat diakses.
current()
Digunakan untuk mengetahui nilai array pada posisi pointer aktif.
next()
Digunakan untuk menaikkan pointer ke data array berikutnya.
prev()
Digunakan untuk kembali ke data array sebelumnya.
end()
Digunakan untuk meletakkan pointer pada posisi akhir array.
reset()
Digunakan untuk meletakkan pointer pada posisi awal array.


Menambah Isi Data Array


Untuk menambahkan isi dari sebuah data Array, digunakan fungsi array_push(). Penggunaan fungsi tersebut memungkinkan isi data array bisa disusun dengan susunan baru.
Contoh dalam script :

<?
echo "<b>Menambahkan data pada Array</b><br>";

$nama=array("Doraemon","Nobita","Sizuka","Giant","Suneo");
echo "Urutan array yang asli \$nama=array(\"Doraemon\",\"Nobita\",\"Sizuka\",\"Giant\",\"Suneo\");";
echo "Urutan array setelah ditambah";

array_push($nama,"Dekisugi","Doremi");
for($i=0; $i<=6; $i++){
    echo "<br>$i : $nama[$i]";
}
?>



Menambahkan Data Array.jpg




Menggabung Data Array


Data pada array dapat digabung dengan beberapa array sekaligus. Untuk menggabung array, kita bisa menggunakan fungsi array_merge(). Berikut contohnya :

<?
$browser1=array("Firefox","Chrome","Opera");
$browser2=array("Safari","Flock","Internet Explorer");
$gabung_browser=array_merge($browser1,$browser2);

echo "Browser yang sering dipakai adalah :<ul>";
for($i=0; $i<=count($gabung_browser)-1; $i++) {
    echo "<li>$gabung_browser[$i]</li>";
}
echo "</ul>";
?>



menggabung array.jpg




Menghapus Isi Array


Untuk menghapus isi data array pertama, kita dapat menggunakan fungsi array_shift(). Berikut adalah contohnya :

<?
$hapus_array=array("Firefox","Chrome","Opera");
echo "Isi dari array :<ul>";
for($i=0; $i<=count($hapus_array)-1; $i++) {
    echo "<li>$hapus_array[$i]</li>";
}
echo "</ul>Isi data array setelah dihapus :<ul>";
$hasil=array_shift($hapus_array);
for($i=0; $i<=count($hapus_array)-1; $i++){
    echo "<li>$hapus_array[$i]</li>";
}
echo "</ul>";
?>


Hasilnya :


Hapus Array.jpg




Mengurutkan Data Array


Dalam bahasa pemrograman PHP, terdapat fungsi yang digunakan untuk mengurutkan isi data array. Fungsi yang digunakan adalah sort() dan berikut adalah contoh dalam script PHP :

<?
$huruf=array("G","B","D","A","C","F","E","H");
sort($huruf);
echo "Huruf urut :<ul>";
for($i=0; $i<=count($huruf)-1; $i++){
    echo "<li>$huruf[$i]</li>";
}
echo "</ul>";
?>



Urut Array.jpg




Memotong Dan Menggabung Elemen Array


Sebagian isi dari sebuah array dapat dipotong atau diambil dengan menggunakan fungsi array_slice(). Sedangkan untuk menggabungkan data array menjadi satu dapat menggunakan fungsi array_merge(). Untuk format penulisannya adalah :
array_slice(variabel,offset,length)
  • variabel
    Adalah variabel array yang datanya akan dipotong
  • Offset
    Apabila parameter ini bernilai positif, maka pengambilan/pemotongan akan dimulai dari awal elemen, namun apabila negatif maka pengambilan/pemotongan dimulai diakhir elemen.
  • length
    Apabila bernilai positif, maka yang diambil adalah jumlah dari elemen namun apabila bernilai negatif, maka pemotongan diakhiri dengan sejumlah elemen akhir sebesar parameter length. Namun apabila parameter length tidak dideklarasikan, maka pemotongan akan diambil sampai dengan element yang terakhir.
Untuk menggabung array format penulisannya adalah :
array_merge(array1,array2,...)

Contoh dalam script adalah :

<?
$data=array("a","b","c","d","e","f");
echo "\$data=array(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\");";

$potongan_pertama=array_slice($data,4);
$potongan_kedua=array_slice($data,2,-1);

echo "<br>Hasil potongan yang pertama adalah : ";
for($a=0; $a<=count($potongan_pertama); $a++){
    echo "$potongan_pertama[$a]";
}

echo "<br>Hasil potongan yang kedua adalah : ";
for($b=0; $b<=count($potongan_kedua); $b++){
    echo "$potongan_kedua[$b]";
}

$gabung=array_merge($potongan_pertama,$potongan_kedua);
echo "<br>Hasil gabungan keduanya adalah : ";
for($c=0; $c<=count($gabung); $c++){
    echo "$gabung[$c]";
}
?>



Potong Gabung Array.jpg


  1. Array berdimensi satu

    <?
    $hewan[0] = "Kucing";
    $hewan[1] = "Kura-kura";
    $hewan[2] = "Anjing";
    $hewan[3] = "Kelinci";
    
    echo("Hewan peliharaan saya adalah $hewan[0]");
    ?>
    
    

    Array 1 Dimensi.jpg


    Indeks dalam array dimulai dari angka/urutan ke-0. Jadi indeks dari array ke-0 adalah elemen pertama dari array dan indeks dari array ke-1 adalah elemen kedua dari aray begitu juga seterusnya.
  2. Array Multidimensi
    Dalam pemrograman PHP juga mengenal adanya penggunaan istilah array multidimensi atau array bertingkat. Berikut adalah contohnya :

    <?
    $buah = array (
         "apel" => array("warna" => "merah","rasa" => "manis"),
         "pisang" => array("warna" => "kuning","rasa" => "manis")
    );
    
    echo "Warna buah apel adalah ".$buah["apel"]["warna"]."<br>";
    echo "Rasa buah pisang adalah ".$buah["pisang"]["rasa"];
    ?>
    
    

    Array Multidimensi.jpg


Tipe Data Object
Tipe data Object bisa berupa bilangan, variabel, ataupun fungsi. Tipe data tersebut dapat membantu programmer untuk membuat sebuah program. Data itu dapat disertakan dalam program sehingga meringkas beberapa fungsi dan dapat memperkecil ukuran file. Semakin kecil ukuran file semakin singkat waktu yang dibutuhkan untuk mengakses file tersebut.
Contoh :
<?
class blog{
    function data_blog(){
        echo "http://viruspintar.blogspot.com";
    }
}

echo "<b>Wahyudi Blog</b> beralamat di ";
$data=new blog;
$data->data_blog();
?>



Dari script diatas, maka akan tampil seperti ini :



Tipe Data Object.jpg