APLIKASI PENCARIAN GRAF TERKECIL DENGAN PERL

KETERANGAN PROGRAM

graf disini adalah rute dari titik ke titik lain contoh penerapaanya adalah semisal truk sampah yang tidak boleh mengambil tong yang sama dan juga truk yang lain juga tidak boleh dirute yang sama pencariannya adalah nilai terkecil ini berada di titik mana yang mengarah ketujuan apa. ini biasanya contoh tugas di mata kuliah riset operasional.

aplikasi menentukan graf lengkap sederhana(tapi tidak sederhana buatnya yaitu menentukan nilai terkecil beserta garis hubungan antar titiknya dengan compiler perl, telah diujicobakan di windows dan linux.

cara kerjanya adalah menjalankan seleksi data sumber dilanjutkan membuat file sementar yang berisikan posisi edge kemudian membuat sorting dan mencari posisi edge tersebut pada file sementara (temp) yang dibuat terdapat 6 file pendukung yaitu: sepuluh.txt, duapuluh.txt, empatpuluh.txt, delapanpuluh.txt, seratus.txt,temp.txt(akan dibuat jika file running)

ISI FILE PENDUKUNG

sepuluh.txt

: berisi nilai acak yang mempunyai alamat node misal 1-1 =115, 1-2 =74 sdg 1-9. trus lanjutkan 2-2 sd 2-9 . 9-9 dsb jadi hanya tepat 1node ke node lainnya tanpa pengulangan

buat file sepuluh.txt dengan nilainya acak berurut ke bawah saja tanpa letak nodenya ada 45 nilai ke bawah

115
74
42
955
712
660
697
450
806
391

diatas cuma sebagian isinya lakukan sampai 45 data sebaiknya buat dengan excel agar mudah untuk yang lainnya karena panjang apalagi untuk seratus.txt.

 

ALGORITMA

program ini mempunyai algoritma berurutan sebagai berikut :

a. melakukan seleksi 5 file teks data sumber yang akan diproses

b. selanjutnya membuat file temp.txt untuk posisi titik dan baris
dengan sumber data beradasarkan nilai seleksi poin a

c. melakukan pembacaan data yang dipilih dimasukkan kedalam variabel
array @data

d. melakukan pegurutan @data dan menyimpannya di @urut dilanjutkan dengan
mencetak nilai pada @urut[0] yaitu posisi array untuk nilai terkecil

e. melakukan pencarian posisi array yang sesuai dengan nilai hasil sorting

f. jika ditemukan dilanjutkan dengan membaca array @posisi untuk mencari
posisi yang tepat pada baris temp.txt jika ditemukan nilai yang sesuai
akhir looping dengan perintah last

g. melakukan pencetakkan posisi tersebut ke layar print”dengan titik
posisi awal dan akhir : $posisi[$i]”;

h. jika semua instruksi telah selesai di proses diakhiri dengan
menutup file yang telah dibuka yaitu dengan perintah close(list_data)
dan close($tmp)

i. selesai

fungsi utama pada program ini adalah

a. seleksi file yang akan dibuka

b. membuat file temp.txt dengan 2 fungsi looping

c. membaca file teks daan memasukkannya kedalam array

d. melakukan sorting dari data sumber

e. mencari posisi pada temp.txt dengan kesesuaian hasil sorting

SOURCECODE YANG DITUNGGU-TUNGGU

—————————————————————-

#!/usr/bin/perl

use strict;

use warnings;

#daftar variabel yang digunakan
my $nilai; #inisalisasi nilai untuk seleksi dan looping
my $buka; #variabel yang digunakan untuk menyimpan nama file sumber
my $L1; my $L2; #variabel untuk looping
my $data_file; #variabel menyimpan nama dari file buka untuk dibaca
my $cari; #variabel digunakan untuk mencari posisi hasil sortingan
my $sementara; my $tmp; #variabel yang berkaitan dengan data temp.txt
my @data; #variabel array untuk menyimpan sumber file
my @urut; #variabel array untuk menyimpan hasil sorting
my @posisi; #variabel array untuk menyimpan posisi node

#program utama

print”silahkan ketikkan 10 untuk pencarian 10 node \n”;
print”silahkan ketikkan 20 untuk pencarian 20 node \n”;
print”silahkan ketikkan 40 untuk pencarian 40 node \n”;
print”silahkan ketikkan 80 untuk pencarian 80 node \n”;
print”silahkan ketikkan 100 untuk pencarian 100 node \n\n”;
print”masukkan pilihan anda : “;

#seleksi pilihan file yang diproses;
$nilai = <STDIN>;
if($nilai==10){
$buka=”sepuluh.txt”;
}elsif($nilai==20){
$buka=”duapuluh.txt”;
}elsif($nilai==40){
$buka=”empatpuluh.txt”;
}elsif($nilai==80){
$buka=”delapanpuluh.txt”;
}elsif($nilai==100){
$buka=”seratus.txt”;
}else{
print”masukkan salah”;
}
print”\n”;

#buat file sementara(temporary)
open($tmp,”>temp.txt”);
for($L1=1;$L1<$nilai;$L1++){
for($L2=1+$L1;$L2<=$nilai;$L2++){
print $tmp “$L1 , $L2 \n”;
}
}

#melakukan sorting
$data_file=$buka;
open(list_data,$data_file);
@data=<list_data>;
@urut=sort {$a <=> $b}@data;
print”nilai terkecil adalah : $urut[0]”;

#melakukan searching posisi node
$cari=$urut[0];
for (my $i = 0; $i < @data; $i++) {
if ($data[$i] == $cari){
$sementara=”temp.txt”;
open($tmp,$sementara);
@posisi = <$tmp>;
print”dengan titik posisi awal dan akhir : $posisi[$i]”;
last;
}
}

close(list_data);
close($tmp);

#program selesai

————————————————————–

>>simpan dengan nama graff.pl

 

RUNNING DI LINUX MINT

bobyfahlevi@boby-net ~/perl/tugas2 $ perl graff.pl

silahkan ketikkan 10 untuk pencarian 10 node
silahkan ketikkan 20 untuk pencarian 20 node
silahkan ketikkan 40 untuk pencarian 40 node
silahkan ketikkan 80 untuk pencarian 80 node
silahkan ketikkan 100 untuk pencarian 100 node

masukkan pilihan anda : 10

nilai terkecil adalah : 24
dengan titik posisi awal dan akhir : 5 , 10

bobyfahlevi@boby-net ~/perl/tugas2 $ perl graff.pl
silahkan ketikkan 10 untuk pencarian 10 node
silahkan ketikkan 20 untuk pencarian 20 node
silahkan ketikkan 40 untuk pencarian 40 node
silahkan ketikkan 80 untuk pencarian 80 node
silahkan ketikkan 100 untuk pencarian 100 node

masukkan pilihan anda : 100

nilai terkecil adalah : 1
dengan titik posisi awal dan akhir : 2 , 60

 

 

SEKIAN KALAU ADA PERTANYAAN SILAKAN KIRIM COMMENT

About boby fahlevi

saya sangat bersemangat

Posted on 6 November 2010, in KULIAH. Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: