Jumlah kumpulan dokumen semakin meningkat atau membesar sehingga dengan adanya Sistem Information Retrieval Terdistribusi dapat mengatasi masalah tersebut dengan cara mendistribusikan dokumen-dokumen yang ada ke semua komputer yang ada.
Jenis khusus dari Sistem Information Retrieval Terdistribusi adalah Sistem IR Peer-to-Peer(P2P), yaitu jika informasi dapat diulang pada beberapa komputer maka tidak ada control akses
Masalah-masalah utama rekayasa informasi:
a. Mendefinisikan protokal pencarian untuk permintaan transmisi dan hasil
b. Merancang server yang dapat menerima permintaan secara efisien, memulai subproses
Masalah-masalah algoritma:
a. Bagaimana mendistribusikan dokumen-dokumen di server pencarian yang terdistribusi
b. Bagaiman untuk menentukan server mana yang seharusnya menerima permintaan
c. Bagaimana menggambungkan hasil dari server yang berbeda
Distributed Information Retrieval System menggunakan tools yang namanya Gnutella dan Napster dimana kedua tools ini memiliki sifat P2P atau Peer to Peer yaitu jika informasi dapat diulang pada beberapa komputer maka tidak ada control akses terpusat.
Sharing While Studying
Showing posts with label Algoritma. Show all posts
Showing posts with label Algoritma. Show all posts
Friday, June 20, 2014
Saturday, January 5, 2013
Algoritma Penempatan pada Partisi Memori Dinamis
kali ini saya akan membahas mengenai algoritma penempatan yang ada pada partisi memori dinamis.. langsung aja,
terdapat 3 algoritma yang dapat digunakan
terdapat 3 algoritma yang dapat digunakan
- First Fit
- Next Fit
- Best Fit
Sesuai dengan urutan 1 sampai 3 dilihat dari tingkat efisien nya
First Fit merupakan algoritma penempatan yang paling bagus karena paling cepat dan paling sederhana. Pencarian blok memori kosong dimulai dari awal dan blok memori yang dipilih adalah blok memori yang pertama kali ditemukan dan ukurannya sesuai
Next Fit kurang efisien dibanding First Fit karena blok memori yang sering ditemukan berada pada ujung akhir memori yang merupakan blok memori yang ukurannya paling besar. Pencarian blok memori kosong dimulai dari lokasi placement terakhir
Best Fit biasanya merupakan performasi yang dapat dikatakan paling buruk dikarenakan proses pencariannya paling lama dan membebani prosesor. Pencarian nya memilih blok memori yang paling sedikit menyisakan ruang memori
Proteksi dan Keamanan Komputer
Proteksi dan Keamanan Komputer
Daerah keamanan computer secara fisik
didukung dan dikontrol otomatis secara administrative. Kita memulai dengan
memeriksa tipe ancaman yang dihadapi oleh fasilitas computer komunikasi,
pendekatan tradisional untuk keamanan computer, termasuk memori dan data.
Untuk memahami
tipe threat dari keamanan yang ada, kita membutuhkan definisi persyaratan dari
keamanan. Keamanan computer dan jaringan menekankan kepada empat persyaratan :
·
Kerahasiaan: Informasi dalam
system computer hanya diakses untuk dibaca oleh pihak berkepentingan. Tipe dari
akses ini termasuk pencetakan, penampilan , dan bentuk objek dari pembatasan,
termasuk penampakan dari keberadaan objek.
·
Integritas : asset system
computer hanya dapat dimodifikasi oleh pihak yang berwenang. Modifikasi
termasuk menulis, mengubah, mengganti status, penghapusan dan pembentukan.
·
Ketersediaan : Aset system
computer yang tersedia untuk pihak yang berwenang.
·
Autentifikasi : Sistem computer
dapat memverifikasi identitas dari user.
Tipe dari Ancaman
Tipe
penyerangan dalam keamanan system computer atau jaringan merupakan yang terbaik
dikarakterisikkan dengan menampilkan fungsi system computer yang menyediakan
informasi secara umum, terdapat alur informasi dari sebuah sumber, seperti
sebuah file atau sebuah daerah memori utama, untuk tujuan seperti file lain
atau user. Arus normal ini dinyatakan dalam empat kategori penyerangan berikut
:
·
Interupsi : Aset dari system yang
dihancurkan atau menjadi tidak tersedia. Ini merupakan penyerangan dari
ketersediaan. Contoh penghancuran sebuah potongan hardware, seperti sebuah hard
disk, potongan dari sebuah baris komunikasi atau ketidakmampuan dari system
manajemen file
·
Intersepsi : Pihak yang tidak
diberi wewenang mencoba akses untuk sebuah asset. Ini merupakan asset
kerahasiaan. Pihak yang tidak diberi wewenang dapat berupa orang, sebuah
program, array computer. Contoh termasuk penyadapan telepon untuk mendapatkan
data dalam sebuah jaringan dan pengopian file atau program
·
Modifikasi : Pihak yang tidak
berwenang yang tidak memiliki akses, namun menggantikan dengan sebuah asset.
Ini merupakan penyerangan dari integritas. Contoh termasuk perubahan nilai
dalam file data, mengubah program dan memodifikasi isi dari pesan yang sedang
ditransmisikan dalam jaringan.
·
Pabrikasi : pihak yang tidak
berwenang menyisipkan objek palsu dalam system. Ini termasuk penyerangan
autentifikasi. Contoh termasuk penyisipan dari pesan palsu dalam jaringan atau menambahkan
record dalam sebuah file.
Proteksi
Pengantar kepada multiprogramming
membawa kemampuan untuk men share sumber berikut di antara user. Sharing ini
melibatkan tidak hanya prosedur, namun juga :
·
Memori
·
Device I/O seperti printer dan
disket
·
Program
·
Data
Kemampuan untuk menshare sumber ini
memperkenalkan kebutuhan untuk proteksi yang menunjuk kepada system operasi
yang dapat menawarkan proteksi terhadap spectrum berikut :
·
Isolasi : Pendekatan ini
berakibat bahwa masing masing proses beroperasi terpisah dari proses lainnya
dengan tidak ada sharing dan komunikasi. Masing masing proses memiliki daerah
alamatnya sendiri dan objek lainnya
·
Share seluruhnya atau share tidak
sama sekali : kepemilikan dari objek (misalnya file atau segmen memori)
mendeklarasikan menjadi public atau private (pribadi). Dalam kasus sebelumnya,
setiap proses dapat mengakses objek, berikutnya hanya pemilik proses yang dapat
mengakses objek.
·
Share melalui kemampuan dinamis :
Perluasan dari konsep control akses untuk memungkinkan pembentukan hak sharing
untuk objek.
·
Pembatasan penggunaan objek :
Bentuk proteksi ini membatasi tidak hanya akses ke sebuah objek nyang akan
ditempatkan. Sebagai contoh, seorang user memungknkan untuk menampilkan sebuah
dokumen yang sensitive, namun tidak mencetaknya. Contoh lain adalah user
diperbolehkan untuk mengakses ke sebuah database yang menurunkan simpulan
statis, namun tidak menentukan nilai data secara spesifik.
Item berikut didaftarkan secara kasat
dalam urutan meningkatkan untuk kesulitan dalam implementasi, namun juga urutan
meningkatkan dari kebaikan proteksi yang mereka sediakan. Sebuah system operasi
dapat menyediakan tingkatan yang berbeda dari proteksi untuk objek, user , atau
aplikasi yang berbeda.
Sistem
operasi menyeimbangkan kebutuhan untuk sharing yang meningkatkan utilitas dari
system computer dengan kebutuhan proteksi dari sumber user individual. Dalam
bagian ini kita akan memperhatikan beberapa mekanisme dari system operasi yang
mendukung proteksi untuk objek ini.
Proteksi dari memori
Dalam
lingkukan multiprogramming, proteksi dari memori utama adalah esensial.
Perhatikan tidak hanya keamanan, namun juga fungsi dari berbagai proses yang
sedang aktif. Jika satu proses dapat secara acak dituliskan dalam daerah memori
proses lainnya, maka proses berikutnya akan tidak dieksekusi dengan benar.
Pembagian
daerah memori dari berbagai proses mudah diselesaikan dengan sebuah skema
memori virtual. Segmentasi atau paging atau kombinasi keduanya, menyediakan
alat yang efektif dari pengaturan memori utama. Jika menyelesaikan isolasi yang
dibutuhkan maka system operasi harus memastikan bahwa masing masing segmen atau
page diakses hanya oleh proses yang ditujukan. Ini mudah untuk diarahkan dengan
menyebutkan bahwa tidak ada entri yang duplikat dalam page atau table segmen.
Jika sharing
diperbolehkan, maka segmen yang sama atau page dapat muncul dalam satu atau
lebih table. Tiap sharing ini paling mudah untuk diseleksaikan dalam system yang
mendukung segmentasi atau kombinasi dari segmentasi dan paging. Dalam kasus
ini, struktur segmen adalah visible untuk aplikasi, dan aplikasi dapat
mendeklarasikan secara individual untuk di share atau tidak di share. Dalam
lingkungan paging murni, menjadi lebih sulit untuk mendiskriminasikan antara
dua tipe memori karena struktur memori transparan untuk aplikasi.
Sebagai contoh
dari dukungan software disediakan proteksi memori yang terdapat dalam mesin
keluarga IBM system 370, OS/390 berjalan berhubungan dengan masing masing page
dalam memori utama 7 bit penyimpanan dari control kunci, yang dapat diset oleh
system operasi. Dua dari bit mengindikasikan apakah page menempati ini yang
telah direferensikan dan diubah; ini digunakan oleh algoritma penggantian page.
Bit sisa digunakan untuk mekanisme proteksi; 4 bit kunci akses control dan
sebuah proteksi bit fetch. Prosesor mereferensikan ke sebuah memori dan DMA I/O
memori harus menggunakan sebauh kunci pemadanan untuk mendapatkan izin
mengakses page itu. Bit proteksi fetch mengindikasikan apakah kunci control
akses diterapkan untuk ke atau baca dan tulis. Dalam prosesor, terdapat sebuah
program status word (PWS), yang mengandung control informasi yang berhubungan
dengan proses yang proses mencoba untuk mengakses sebuah page atau untuk
mengisi sebuah operasi DMA dalam sebuah page, kunci PSCW dibandingkan dengan
kode akses. Sebuah operasi tulis dilakukan hanya jika kode sesuai. Jika bit
fetch di set , maka kunci PSW harus memadankan kode akses untuk operasi baca.
Penyusupan
Satu dari dua ancaman yang paling sering
dipublikasikan dalam keamanan adalah penyusupan (lainnya adalah virus), yang
biasanya direferensikan sebagai hacker atau cracker. Dalam studi awal
penyelundupan, Andersen mengidentifikasikan tiga kelas dari penyusupan
·
Penyamaran : Seorang individu
yang tidak diberi otoritas untuk menggunakan computer dan yang memasuki control
akses system untuk mendapatkan sebauh account user yang legitimasi.
·
Mesfeasor : Seorang user yang
diberi legitimasi untuk mengakses data, program atau sumber, untuk akses yang
demikian tidak diotorisasi atau diberi otorisasi untuk akses demikian namun
menyalah gunakan privasinya
·
User Clandestine : Seorang
individu yang merampas control supervisor atas system dan menggunakan control
ini untuk menginvasi auditing dan control akses atau untuk meneruskan kolektif
audit
Penyamaran sepertinya menjadi bagian
lain; penyelundupan biasanya berada di dalam; dan user clandestine dapat
menjadi bagian luar dan bagian dalam.
Penyusupan menyerang berkisar dari baik
ke serius. Dalam bagian baik akhir dari skala terdapat banyak manusia yang
hanya menginginkan untuk memperdalam internet dan melihat apakah yang terjadi
di sana. Dala bagian yang serius secara
individual siapa yang mencoba untuk membaca data privasi, melakukan modifikasi
yang tidak diotorisasi ke data atau merusak system.
Software Malicious
Mungkin tipe yang paling berbahaya untuk
system computer dinyatakan dalam program yang mengeksploitasi kerentanan dalam
system komputasi. Dalam konteks ini, kita memerhatikan dengan program aplikasi
sebagaimana halnya dengan program utilitas, secara editor dan compiler. Istilah
generikan untuk penyerangan demikian adalah software malicious atau malware.
Malware merupakan software yang didesain untuk mengakibatkan kerusakan atau
untuk menggunakan sampai seluruh sumber diri target computer. Sangat sering
untuk dinyatakan dalam penyamaran dari software yang resmi. Dalam beberapa
kasus, akan menebarkan dirinya ke dalam computer lainnya melalui email atau
floppy disket yang terinfeksi.
Kita memulai
bagian ini dengan kilasan dari spectrum penyerangan software. Sisa dari bagian
ini ditunjukan untuk virus, pertama dengan melihat dalam keberadaan dan
kemudian dalam pengukurannya.
Keamanan Windows 2000
Sebuah contoh yang baik dari konsep
control akses yang telah kita bahas adalah fasilitas control akses windows 2000
(W2k) yang mengeksploitasi konsep berorientasi objek untuk menyediakan sebauh
kemampuan dari control akses yang fleksibel.
W2K menyediakan fasilitas control akses
seragam yang diterapkan untuk proses thread, files, semaphore, windows, dan
objek lainnya. Control akses dibatasi oleh dua entitas: sebuah akses token yang
diasosiasikan dengan masing masing proses dan sebuah descriptor keamanan yang
diasosiasikan dengan masing masing objek untuk akses antarproses yang
memungkinkan.
1.
Skema Control Akses
Ketika seorang user masuk ke
sebuah system W2K, W2K menggunakan sebuah skema nama / password untuk
mengautentifikasi user. Jika log on diterima, sebuah proses dibentuk untuk user
dan sebuah akses diasosiasikan dengan proses objek tersebut. Akses token secara
rinci dijelaskan kemudian, termasuk ID keamanan (SID), yang mana identifier
oleh user ini dikenal untuk system dengan tujuan keamanan. Ketika sebuah
tambahan proses yang diperluas oleh user pada awal proses, objek proses yang
baru menerima warisan tanda akses yang sama. Akses token bertindak untuk dua
tujuan :
a.
Tetap dari seluruh informasi
keamanan bersama dengan akses validasi kecepatan. Ketika proses apa pun yang
berhubungan dengan akses upaya user, subsistem keamanan dapat membuat
penggunaan dari token yang dihubungkan dengan proses untuk menentukan privasi
akses user.
b.
Memungkinkan untuk masing masing
proses memodifikasi karakteristiknya dalam cara yang terbatas tanpa
mempengaruhi lainnya yang sedang berjalan dalam kepentingan dari user lainnya
Hal signifikan
utama dari nomor dua adalah privasi yang dapat diasosiasikan dengan seorang
user. Akses token yang mengindikasikan pribadi seorang user didapat. Secara
umum, token diawali dengan masing masing privasi dalam keadaan nonaktif.
Selanjutnya , jika satu dari proses membutuhkannya untuk melakukan operasi
privasi, proses dapat memungkinkan untuk privasi yang tepat dan mencoba untuk
akses. Akan diminati untuk tetap dalam seluruh dari informasi keamanan untuk
seorang user dalam satu system, karena dalam kasus memungkinkan sebuah privasi
untuk satu proses memungkinannya untuk semua.
2.
Akses Token
a.
Security ID : Mengidentifikasi
seorang user secara unik terhadap seluruh sesi dalam jaringan. Ini umumnya
berhubungan dengan sebuah nama log on user.
b.
Group SID : Daftar kelompok
pemakai yang menjadi anggota. Sebuah group yang merupakan sekumpulan user ID
yang mengidentifikasikan sebagai sebuah grup yang bertujuan untuk control
akses. Masing masing grup memiliki grup SID tunggal. Akses untuk sebuah obkel
dapat didefinisikandari grup SID, individual SID< atau kombinasi.
c.
Privasi : Daftar dari system
layanan security sensitive yang mana user dapat dipanggil. Sebuah contoh adalah
pembentukan toke. Contoh lain adalah kumpulan dari backup privasi; user dengan
privasi ini diperbolehkan untuk menggunakan sebuah file tool backup yang
normalnya mereka tidak dapat dibaca. Kebanyakan user akan kita memiliki privasi
d.
Default ACL : Merupakan daftar
inisial proteksi yang diterapkan untuk objek membuat user. User dapat dengan
langsung ACL untuk setiap objek yang memiliki atau yang mana grup miliki.
3.
Pendeskripsian keamanan
a.
Flag : Mendefinisikan tipe
penjelasan keamanan (security descriptor). Flag mengindikasikan apakah atau
tidak SACL dan DACI yang hadir, apakah atau tidak mereka ditempatkan dalam
objek dengan sebuah mekanisme default, apakah pointer dalam pendeskripsi
menggunakan pengalamatan absolut atau relative. Penjelasan relative dibutuhkan
untuk objek yang ditransmisikan melalui sebuah jaringan, seperti informasi yang
ditransmisikan dalam RPC.
b.
Pemilik : Pemilik objek secara
umum dapat melakukan aksi apa saja dalam penjelasan keamanan, pemilik dapat
secara individual atau grup dari SID. Pemilik memiliki otoritas untuk mengubah
isi dari DACL.
c.
System Access Control List (SACL)
: menyatakan jenis apa dari operasi dalam objek yang seharusnya membangun pesan
audit. Sebuah aplikasi harus memiliki privasi yang berhubungan dalam token
akses untuk membaca atau menulis dari SACL dari objek mana saja. Ini untuk
menghindari aplikasi yang tidak diberi otorisasi dari pembacaan SCAL (lebih
lanjut pembelajaran tidak untuk menghindari pembangun audit) atau menuliskan
mereka (untuk membangun banyak audit yang mengakibatkan sebuah operasi tertentu
tidak diperhatikan).
d.
Discretionaru Access Control List
(DACL) : menentukan user dan grup mana yang dapat mengakses objek untuk operasi
tertentu. Berisi daftar entri akses control (ACE).
Ketika sebuah
objek dibentuk, pembentukan proses dapat menyatan sebagai pemilik dari SID atau
kelompok SID itu sendiri dalam akses token. Proses yang dibentuk tidak dapat
dinyatakan sebagai pemilik yang tidak berada dalam akses token saat ini.
Selanjutnya, setiap proses yang telah diberikan hak dapat melakukan mengubah
pemilik dari sebuah objek, namun sekali lagi dengan pembatasan yang sama. Alas
an untuk pembatasan adalah untuk menghindarkan seorang user menutupi jalurnya
setelah mencoba beberapa aksi yang tidak otorisasi
Yang paling
penting 16 bit dari penyamaran mengandung bit yang diperuntukan untuk seluruh
tipe dari objek . Lima dari ini dinyatan sebagai tipe akses standar :
·
Sinkronisasi : Memberikan izin
untuk sinkronisasi eksekusi dengan beberapa even yang dihubungkan dengan obje.
Secara khusus, objek ini dapat digunakan dalam sebuah fungsi tunggu.
·
Write_owner : Memungkinkan
program untuk memodifikasi pemilik dari objek. Ini sangat bermanfaat karena
pemilik objek dapat selalu berubah dari proteksi dalam objek (Pemilik tidak
dapat menolak akses write DAC)
·
Write_DAC : Memungkinkan aplikasi
untuk memodifikasi DACL dan proteksi dalam objek.
·
Read_Control : memungkinkan
aplikasi untuk meminta query pemilik dan fiel DACL dari penjelasan keamanan
objek
·
Delete : Memungkinkan aplikasi
untuk menghapus objek.
Sumber : Operating SystemInternal and Design (William Stallings edisi 6) bab 14 (Computer Security
Threats) dan bab 15 (Computer Security Techniques).
Friday, November 30, 2012
Jenis Routing , Routing Statis, dan Routing dinamis
Sebelum ke jenis konfigurasi routing sebelumnya ada jenis router berdasarkan keterhubungan dengan router lain.
- Router Global berarti semua router memiliki informasi lengkap mengenai link cost, dan topologi jaringan. Algoritma yang digunakan adalah link state
- Decentralized berarti router tersebut hanya mengetahui link cost ke router berikutnya yang terhubung langsung dengan dirinya. Algoritma yang digunakan adalah algoritma distance vector.
Routing Statis
Routing statis merupakan protokol routing yang dilakukan secara manual dengan menambahkan rute rute di routing tabel dari setiap router
Kelebihan : tidak ada overhead proses pada router, tidak ada pengaturan bandwidht diantara router, menambah keamanan karena admin dapat memilih untuk mengizinkan akses ke network tertentu
Kerugian : admin harus benar benar mengerti internetworking pada router, menambah route pada tabel routing secara manual bila network ditambahkan, kurang valid dan sulit untuk network yang besar
Routing Dinamis
Routing dinamis secara otomatis memperbaharui tabel routing, yang mengurangi beban administrative, namun meningkatkan lalu lintas dalam jaringan yang besar dan menggunakan protokol routing.
Kelebihan : lebih mudah karena routing secara otomatis
Kerugian : membebani dalam proses proses di CPU router sehingga perlu router yang lebih handal dan mahal.
Monday, November 26, 2012
Algoritma Penjadualan Feedback (FB)
Feedback ( FB )
dalam algoritma Feedback setiap proses yang datang langsung masuk pada antrian prioritas tertinggi, sehingga langsung di eksekusi selama satu slot atau satu kuantum, jadi setiap proses yang datang selalu didahulukan karena memiliki prioritas yang tinggi, bila proses tersebut ter-preempt(tersela) oleh proses lain atau jatah waktunya habis selanjutnya dimasukkan ke dalam antrian prioritas lebih rendah ( teknik ini disebut multilevel feedback )
apa saja sih dalam pokok pembahasan Feedback ( FB )?
- penjadualan menggunakan model preemptive
- setiap proses mempunyai prioritas
- nomor prioritas dapat berubah
- setiap satu nomor prioritas disediakan antrian tersendiri
- dalam setiap antrian digunakan algoritma FCFS, kecuali antrian untuk prioritas terendah
- pada antrian prioritas terendah digunakan algoritma round robin
kekurangan dari algoritma Feedback (FB)
- turn around time (TAT) proses yang panjang dapat semakin lama
- proses yang panjang dapat mengalami starvation bila terus menerus datang proses yang baru
- overhead tinggi
kelebihan dari algoritma Feedback (FB)
- dapat digunakan pada kondisi dimana informasi tentang panjang proses atau perkiraan waktu eksekusi tidak diketahui
Bagaimana solusi untuk mencegah starvation?
dapat menggunakan FB dinamis dan digunakan jatah waktu eksekusi dinamis ( menggunakan kuantum 2 pangkat i )
Friday, November 23, 2012
Penjadualan Higest Response Ration Next
Highest
Response Ratio Next (HRRN)
Highest
response ration next merupakan algoritma yang pemilihan proses didasarkan pada
rasio response tertinggi
Rasio
response diperoleh dari pertandingan antara jumlah waktu tunggu ditambah
perkiraan service time dengan perkiraan service time, data waktu eksekusi
diperoleh dari developer atau berdasarkan rekaman sebelumnya, proses kecil akan
cenderung menghasilkan rasio response besar.
Kekurangan
dari response ratio next
- Terjadi overhead akibat scheduler harus mengetahui/memperkirakan service time proses proses yang akan dieksekusi
Kelebihan
dari response ratio next
- Dapat mencegah starvation
- Setiap proses akan mendapatkan layanan yang seimbang
- Response time cepat
Penjadualan Algoritma Shortest Remaining Time
Shortest
remaining time merupakan algortima yang eksekusi proses diatur berdasarkan
perkiraan sisa waktu terkecil
Proses yang
baru masuk dapat langsung dieksekusi bila total waktu eksekusinya lebih kecil
daripada sisa waktu proses yang sedang running dan merupakan model preemtivenya
SPN.
Kekurangan
dari shortest remaining time
- terjadi overhead akibat scheduler harus menghitung/memperkirakan sisa waktu eksekusi setiap proses untuk menentukan sisa waktu yang terkecil
- dapat terjadi starvation pada proses yang panjang
- proses yang panjang dikalahkan oleh proses yang kecil
Kelebihan
dari shortest remaining time
- Kualitas layanan rata rata yang diterima proses lebih baik
- Throughput tinggi
- Response time cepat
Penjadualan Algoritma Shortest Process Next
Shortest
process next merupakan algoritma yang eksekusi proses diatur berdasarkan
perkiraan ukuran proses terkecil
Kekurangan
dari shortest process next
- scheduler harus mengetahui/memperkirakan ukuran setiap proses yang akan dieksekusi
- proses besar dapat mengalami starvation
- overhead bisa tinggi
Kelebihan
dari shortest process next
- dapat mencegah kerugian yang dialami proses kecil seperti pada FCFS
- throughput tinggi
- proses kecil mempunyai response time kecil
Penjadualan Algoritma Round Robin
Round Robin (RR)
round robin merupakan
algoritma yang eksekusi proses diatur berdasarkan alokasi waktu tertentu (slot
waktu ) yang di atur dengan clock interrupt, clock interrupt mengatur waktu
secara periodik. Bila terjadi clock interrupt maka proses yang seddang running
dimasukkan ke dalam antrian ready dan proses di antrian ready paling depan di
eksekusi
kekurangan dari round
robin
- performansi lebih buruk dibanding FCFS jika ukuran slot
lebih besar daripada ukuran proses terbesar
- dapat terjadi overhead berlebihan jika ukuran setiap
slot terlalu kecil
- proses I/O bound mendapatkan waktu layanan lebih
sedikit
Solusi dari kekurangan round robin
round robin dimodifikasi menjadi
virtual round robin(VRR) dengan menambahkan sebuah antrian yang disebut
memory antrian auxiliary
Kelebihan dari round robin
- dapat menghindari ketidak adilan layanan terhadap
proses kecil seperti yang terjadi pada FCFS
- respone time lebih cepat untuk proses berukuran kecil
- dapat mencegah starvation
- overhead kecil, jika ukuran proses rata rata lebih
kecil dibanding ukuran quantum/slot
Thursday, November 22, 2012
Routing Algoritma
Routing Algoritma
Apa sih routing algoritma itu ? suatu router akan melakukan
routing dan forwarding suatu data dengan tetangga router 1 , 2 , dan 3 .
Kemudian router tersebut akan melakukan routing terhadap router 2, bagaimana
caranya ? Routing algoritma akan
membuat sebuah table local forwarding yang akan menentukan router manakah yang
akan dijadikan output dari router tujuan, seperti gambar di bawah ini
Routing algoritma memiliki 2 classification berdasarkan
algoritma, algoritma tersebut adalah link state dengan distance vector algoritma,
dan apakah perbedaan antara algoritma link state dengan distance vector ? untuk
link state router harus memahami atau mengetahui semua informasi berkaitan
topologi jaringan yang dilakukan secara broadcast antara router satu terhadap
router lainnya
Pada link state memiliki dijkstra algoritma yang menentukan
suatu jalur mana yang memiliki bobot terkecil dan setiap nodenya harus
terpenuhi
Pada distance vector memiliki bellman-ford algoritma yang
menentuhkan jalur manakah yang memiliki bobot terkecil dan setiap nodenya tidak
harus terpenuhi,
Dan apa perbedaan antara dijkstra dengan bellman-ford ? ya ,
seperti apa yang saya sebutkan di atas bahwa dijkstra menentukan jalur mana yg
memiliki bobot terkecil dengan semua node harus terpenuhi tetapi bellman-ford
tidak harus terpenuhi
contoh :
menggunakan algoritma dijkstra akan didapat
dengan algoritma bellman-ford
contoh :
menggunakan algoritma dijkstra akan didapat
dengan algoritma bellman-ford
Sumber : kurose chapter4_5th_2009 slide
Saturday, May 26, 2012
Prinsip & Konsep design
Disini saya akan share latihan untuk uas RPL besok nih , dimulai dari prinsip & konsep design.. langsung aja ke definisi design
Definisi design : Proses pendefinisian arsitektur PL, komponen, modul, antarmuka, pendekatan pengujian serta data untuk memenuhi kebutuhan yang telah ditentukan.
kemudian terdapat tahap design secara umum, antara lain :
Konsep design
soalnya seperti ini :
berikan 3 contoh abstraksi data berikut abstraksi procedure yang dapat digunakan untuk memanipulasi data tersebut!
Jawab :
Physical level :
Memperlihatkan data & strukturnya
Conceptual level :
memperlihatkan data misalnya
data karyawan direpresentasikan
dalam beberapa file
View level :
data yang terlihat pada
hasil pengolahan dari
applikasi basis data
nah itu jawaban yang memenuhi pertanyaan di atas..
lanjut ke...
Jelaskan bagaimana keterkaitan konsep "information"hiding" (sebagai atribut dari modularitas efektif) dengan konsep "module independence". berikan contoh.
langsung jawab bahwa :
Functional Independence, modularitas PL ditentukan
Coupling : keterkaitan antar modul dalam PL
Cohesion : keterkaitan komponen" dalam 1 modul
jadi konsep diaman informasi dalam modul tidak dapat diakses oleh modul lain yang tidak membutuhkan informasi tersebut.
Definisi design : Proses pendefinisian arsitektur PL, komponen, modul, antarmuka, pendekatan pengujian serta data untuk memenuhi kebutuhan yang telah ditentukan.
Model proses design |
- Penentuan solusi
- Validasi solusi
- Memodelkan Solusi
- Memperbaiki dan menjabarkan solusi
- design data : Data design ( proses transformasi domain informasi yan dibentuk pada saat analisis menjadi struktur data yang dibutuhkan pada tahapan implementasi)
- design arsitektural : structure chart ( mendefinisikan relasi antar elemen" struktural yang utama dari program menjadi kerangka modular)
- design antarmuka : mockup / UI kasar (menjabarkan bagaimana PL dapat berkomunikasi dengan komponen lain)
- design prosedural : algoritma /pseudo code ( mentransformasikan elemen" struktural pada arsitektur program menjadi deskripsi prosedural dari komponen" PL )
Konsep design
- Abstraksi ( konsep rekayasa system pada level generalisasi tertentu)
- penghalusan/perbaikan ( setiap langkah design PL dilakukan refinement)
- modularitas (konsep yang dapat didekoposisi menjadi komponen")
- arsitektur perangkat lunak (mendeskripsikan PL secara keseluruhan)
- control hierarchy ( merepresentasikan organisasi modul")
- structural partitioning (struktur program harus dapat dipartisi vertikal,horizontal)
- data structure ( representasi dari keterhubungan logik antar elemen data)
- sw procedure ( penjabarak detail pemrosesan dari setiap modul)
- information hiding ( modul" PL harus dispesifikasikan dan didisian)
soalnya seperti ini :
berikan 3 contoh abstraksi data berikut abstraksi procedure yang dapat digunakan untuk memanipulasi data tersebut!
Jawab :
Physical level :
Memperlihatkan data & strukturnya
Conceptual level :
memperlihatkan data misalnya
data karyawan direpresentasikan
dalam beberapa file
View level :
data yang terlihat pada
hasil pengolahan dari
applikasi basis data
nah itu jawaban yang memenuhi pertanyaan di atas..
lanjut ke...
Jelaskan bagaimana keterkaitan konsep "information"hiding" (sebagai atribut dari modularitas efektif) dengan konsep "module independence". berikan contoh.
langsung jawab bahwa :
Functional Independence, modularitas PL ditentukan
Coupling : keterkaitan antar modul dalam PL
Cohesion : keterkaitan komponen" dalam 1 modul
jadi konsep diaman informasi dalam modul tidak dapat diakses oleh modul lain yang tidak membutuhkan informasi tersebut.
Wednesday, May 16, 2012
Branch and Bound TSP java
Branch and Bound implementation TSP for Java
copy this code in the same folder or if take software like eclipse, netbeans ect. take in the same package.
Matrik.java
Matrikint.java
bb.java
branchbound.java
Main.java
copy this code in the same folder or if take software like eclipse, netbeans ect. take in the same package.
Matrik.java
package branchandbound;/**
*
* @Rezaakhmadg
*/
public class Matrik {
int graph[][]=new int['H']['H'];
Matrik(){
graph['A']['A']=0;graph['A']['B']=75;graph['A']['C']=60;graph['A']['D']=50;graph['A']['E']=215;graph['A']['F']=130;graph['A']['G']=95;
graph['B']['A']=60;graph['B']['B']=0;graph['B']['C']=60;graph['B']['D']=70;graph['B']['E']=85;graph['B']['F']=50;graph['B']['G']=135;
graph['C']['A']=40;graph['C']['B']=55;graph['C']['C']=0;graph['C']['D']=130;graph['C']['E']=95;graph['C']['F']=100;graph['C']['G']=55;
graph['D']['A']=40;graph['D']['B']=75;graph['D']['C']=140;graph['D']['D']=0;graph['D']['E']=45;graph['D']['F']=60;graph['D']['G']=135;
graph['E']['A']=20;graph['E']['B']=85;graph['E']['C']=100;graph['E']['D']=40;graph['E']['E']=0;graph['E']['F']=90;graph['E']['G']=95;
graph['F']['A']=120;graph['F']['B']=55;graph['F']['C']=110;graph['F']['D']=60;graph['F']['E']=95;graph['F']['F']=0;graph['F']['G']=65;
graph['G']['A']=80;graph['G']['B']=135;graph['G']['C']=60;graph['G']['D']=130;graph['G']['E']=95;graph['G']['F']=60;graph['G']['G']=0;
}
}
*
* @Rezaakhmadg
*/
public class Matrik {
int graph[][]=new int['H']['H'];
Matrik(){
graph['A']['A']=0;graph['A']['B']=75;graph['A']['C']=60;graph['A']['D']=50;graph['A']['E']=215;graph['A']['F']=130;graph['A']['G']=95;
graph['B']['A']=60;graph['B']['B']=0;graph['B']['C']=60;graph['B']['D']=70;graph['B']['E']=85;graph['B']['F']=50;graph['B']['G']=135;
graph['C']['A']=40;graph['C']['B']=55;graph['C']['C']=0;graph['C']['D']=130;graph['C']['E']=95;graph['C']['F']=100;graph['C']['G']=55;
graph['D']['A']=40;graph['D']['B']=75;graph['D']['C']=140;graph['D']['D']=0;graph['D']['E']=45;graph['D']['F']=60;graph['D']['G']=135;
graph['E']['A']=20;graph['E']['B']=85;graph['E']['C']=100;graph['E']['D']=40;graph['E']['E']=0;graph['E']['F']=90;graph['E']['G']=95;
graph['F']['A']=120;graph['F']['B']=55;graph['F']['C']=110;graph['F']['D']=60;graph['F']['E']=95;graph['F']['F']=0;graph['F']['G']=65;
graph['G']['A']=80;graph['G']['B']=135;graph['G']['C']=60;graph['G']['D']=130;graph['G']['E']=95;graph['G']['F']=60;graph['G']['G']=0;
}
}
Matrikint.java
package branchandbound;
/**
*
* @Rezaakhmadg
*/
public class Matrikint {
int graphI[][]=new int[8][8];
Matrikint(){
graphI[1][1]=0;graphI[1][2]=75;graphI[1][3]=60;graphI[1][4]=50;graphI[1][5]=215;graphI[1][6]=130;graphI[1][7]=95;
graphI[2][1]=60;graphI[2][2]=0;graphI[2][3]=60;graphI[2][4]=70;graphI[2][5]=85;graphI[2][6]=50;graphI[2][7]=135;
graphI[3][1]=40;graphI[3][2]=55;graphI[3][3]=0;graphI[3][4]=130;graphI[3][5]=95;graphI[3][6]=100;graphI[3][7]=55;
graphI[4][1]=40;graphI[4][2]=75;graphI[4][3]=140;graphI[4][4]=0;graphI[4][5]=45;graphI[4][6]=60;graphI[4][7]=135;
graphI[5][1]=20;graphI[5][2]=85;graphI[5][3]=100;graphI[5][4]=40;graphI[5][5]=0;graphI[5][6]=90;graphI[5][7]=95;
graphI[6][1]=120;graphI[6][2]=55;graphI[6][3]=110;graphI[6][4]=60;graphI[6][5]=95;graphI[6][6]=0;graphI[6][7]=65;
graphI[7][1]=80;graphI[7][2]=135;graphI[7][3]=60;graphI[7][4]=130;graphI[7][5]=95;graphI[7][6]=60;graphI[7][7]=0;
}
}
/**
*
* @Rezaakhmadg
*/
public class Matrikint {
int graphI[][]=new int[8][8];
Matrikint(){
graphI[1][1]=0;graphI[1][2]=75;graphI[1][3]=60;graphI[1][4]=50;graphI[1][5]=215;graphI[1][6]=130;graphI[1][7]=95;
graphI[2][1]=60;graphI[2][2]=0;graphI[2][3]=60;graphI[2][4]=70;graphI[2][5]=85;graphI[2][6]=50;graphI[2][7]=135;
graphI[3][1]=40;graphI[3][2]=55;graphI[3][3]=0;graphI[3][4]=130;graphI[3][5]=95;graphI[3][6]=100;graphI[3][7]=55;
graphI[4][1]=40;graphI[4][2]=75;graphI[4][3]=140;graphI[4][4]=0;graphI[4][5]=45;graphI[4][6]=60;graphI[4][7]=135;
graphI[5][1]=20;graphI[5][2]=85;graphI[5][3]=100;graphI[5][4]=40;graphI[5][5]=0;graphI[5][6]=90;graphI[5][7]=95;
graphI[6][1]=120;graphI[6][2]=55;graphI[6][3]=110;graphI[6][4]=60;graphI[6][5]=95;graphI[6][6]=0;graphI[6][7]=65;
graphI[7][1]=80;graphI[7][2]=135;graphI[7][3]=60;graphI[7][4]=130;graphI[7][5]=95;graphI[7][6]=60;graphI[7][7]=0;
}
}
bb.java
package branchandbound;
/**
*
* @Rezaakhmadg
*/
public class bb {
char hasil[];
int idx;
}
/**
*
* @Rezaakhmadg
*/
public class bb {
char hasil[];
int idx;
}
branchbound.java
package branchandbound;
/**
*
* @Rezaakhmad
*/
public class branchbound {
bb br[]= new bb[10];
Matrik S=new Matrik();
Matrikint Mat=new Matrikint();
public float bound;
public float cekbound;
public char getMinNode(char n){
char k='A';
int l=999;
for (char i='A';i<'H';i++) {
if (S.graph[n][i]<l&&i!='A'&&S.graph[n][i]!=0){
k=i;
l=S.graph[n][i];
}
}
return (k);
}
public int isZero(){
int x=1;
for (char i='A';i<'H';i++){
for (char j='A';j<'H';j++){
if (S.graph[i][j]!=0) x=0;
}
}
return x;
}
public void empty (char a,char b){
if (a=='A'||b=='A'){
S.graph[a][b]=0;
S.graph[b][a]=0;
}else{
for (char i='A';i<'H';i++){
if (a!='A'){
S.graph[a][i]=0;
S.graph[i][a]=0;
}
}
}
}
public bb Solusi(){
bb Brn=new bb();
Brn.idx=0;
Brn.hasil=new char[100];
char p='A';
char temp;
Brn.hasil[Brn.idx]=p;
Brn.idx++;
int ketemu=0;
while (ketemu==0){
temp=getMinNode(p);
Brn.hasil[Brn.idx]=temp;
Brn.idx++;
empty(p,temp);
p=temp;
if (isZero()==1){
ketemu=1;
}
}
Brn.hasil[Brn.idx]='A';
Brn.idx++;
return Brn;
}
public int minDouble(char p,char c){
int min1=999;
int min2=999;
int hasil=0;
for (char i='A';i<'H';i++){
if (i!=p&&i!=c){
for (char j='A';j<'H';j++){
if (S.graph[i][j]<min1&&S.graph[i][j]!=0) {
min2=min1;
min1=S.graph[i][j];
}else if(S.graph[i][j]<min2&&S.graph[i][j]!=0){
min2=S.graph[i][j];
}
}
if (min1==999) min1=0;
if (min2==999) min2=0;
hasil+=min1+min2;
min1=999;min2=999;
}
}
return hasil;
}
public int minSingle(char p,char c){
int min1=999;
int min2=999;
int hasil=S.graph[p][c]+S.graph[c][p];
for (char i='A';i<'H';i++){
if (S.graph[p][i]<min1&&S.graph[p][i]!=0&&i!=c) {
min1=S.graph[p][i];
}
if (S.graph[c][i]<min2&&S.graph[c][i]!=0&&i!=p) {
min2=S.graph[c][i];
}
}
if (min1==999) min1=0;
if (min2==999) min2=0;
hasil+=min1+min2;
return hasil;
}
public float getBound(char p,char c){
bound = ((minSingle(p,c))+(minDouble(p,c))/2);
return bound;
}
public void cetakSolusi(char c[],int n){
int i=1,j=1;
String d="A ";
int h=0;
int temp1=1;
int temp2=0;
// for (i=1;i<n;i++) {
// System.out.print("Solusi Indeks : " +i+ "\n");
// System.out.print("Solusi Kota : " +c[i]+ " \n");
//
// }
//
// i=1;
while (i<n){
if (c[i]=='A' && i==n-1) break;
d+=c[i]+ " ";
switch (c[i]) {
case 'A': temp2 = 1;
break;
case 'B': temp2 = 2;
break;
case 'C': temp2 = 3;
break;
case 'D': temp2 = 4;
break;
case 'E': temp2 = 5;
break;
case 'F': temp2 = 6;
break;
case 'G': temp2 = 7;
break;
}
System.out.print("isi : " + temp1 + " " +temp2 + " " + c[i] + " \n");
h+=Mat.graphI[temp1][temp2];
switch (c[i]) {
case 'A': temp1 = 1;
break;
case 'B': temp1 = 2;
break;
case 'C': temp1 = 3;
break;
case 'D': temp1 = 4;
break;
case 'E': temp1 = 5;
break;
case 'F': temp1 = 6;
break;
case 'G': temp1 = 7;
break;
}
i++;
}
System.out.print("Solusi : " + d + "total waktu yang dibutuhkan " + h + " \n");
}
public void branchNbound(){
int idx=1;
float cek=999;
char p='A';
char min;
char c[];
c=new char[20];
float b[];
b=new float[10];
c[0]='A';
while(isZero()==0){
min='A';
for(char i='A';i<'H';i++){
if(i!='H'&&S.graph[p][i]!=0){
b[i]=getBound(p,i);
if (b[i]<cek){
cek=b[i];
min=i;
}
}
}
cek=999;
c[idx]=min;
idx++;
empty(p,min);
for(char i='A';i<'H';i++){
b[i]=0;
}
p=min;
}
cetakSolusi(c,idx);
}
}
/**
*
* @Rezaakhmad
*/
public class branchbound {
bb br[]= new bb[10];
Matrik S=new Matrik();
Matrikint Mat=new Matrikint();
public float bound;
public float cekbound;
public char getMinNode(char n){
char k='A';
int l=999;
for (char i='A';i<'H';i++) {
if (S.graph[n][i]<l&&i!='A'&&S.graph[n][i]!=0){
k=i;
l=S.graph[n][i];
}
}
return (k);
}
public int isZero(){
int x=1;
for (char i='A';i<'H';i++){
for (char j='A';j<'H';j++){
if (S.graph[i][j]!=0) x=0;
}
}
return x;
}
public void empty (char a,char b){
if (a=='A'||b=='A'){
S.graph[a][b]=0;
S.graph[b][a]=0;
}else{
for (char i='A';i<'H';i++){
if (a!='A'){
S.graph[a][i]=0;
S.graph[i][a]=0;
}
}
}
}
public bb Solusi(){
bb Brn=new bb();
Brn.idx=0;
Brn.hasil=new char[100];
char p='A';
char temp;
Brn.hasil[Brn.idx]=p;
Brn.idx++;
int ketemu=0;
while (ketemu==0){
temp=getMinNode(p);
Brn.hasil[Brn.idx]=temp;
Brn.idx++;
empty(p,temp);
p=temp;
if (isZero()==1){
ketemu=1;
}
}
Brn.hasil[Brn.idx]='A';
Brn.idx++;
return Brn;
}
public int minDouble(char p,char c){
int min1=999;
int min2=999;
int hasil=0;
for (char i='A';i<'H';i++){
if (i!=p&&i!=c){
for (char j='A';j<'H';j++){
if (S.graph[i][j]<min1&&S.graph[i][j]!=0) {
min2=min1;
min1=S.graph[i][j];
}else if(S.graph[i][j]<min2&&S.graph[i][j]!=0){
min2=S.graph[i][j];
}
}
if (min1==999) min1=0;
if (min2==999) min2=0;
hasil+=min1+min2;
min1=999;min2=999;
}
}
return hasil;
}
public int minSingle(char p,char c){
int min1=999;
int min2=999;
int hasil=S.graph[p][c]+S.graph[c][p];
for (char i='A';i<'H';i++){
if (S.graph[p][i]<min1&&S.graph[p][i]!=0&&i!=c) {
min1=S.graph[p][i];
}
if (S.graph[c][i]<min2&&S.graph[c][i]!=0&&i!=p) {
min2=S.graph[c][i];
}
}
if (min1==999) min1=0;
if (min2==999) min2=0;
hasil+=min1+min2;
return hasil;
}
public float getBound(char p,char c){
bound = ((minSingle(p,c))+(minDouble(p,c))/2);
return bound;
}
public void cetakSolusi(char c[],int n){
int i=1,j=1;
String d="A ";
int h=0;
int temp1=1;
int temp2=0;
// for (i=1;i<n;i++) {
// System.out.print("Solusi Indeks : " +i+ "\n");
// System.out.print("Solusi Kota : " +c[i]+ " \n");
//
// }
//
// i=1;
while (i<n){
if (c[i]=='A' && i==n-1) break;
d+=c[i]+ " ";
switch (c[i]) {
case 'A': temp2 = 1;
break;
case 'B': temp2 = 2;
break;
case 'C': temp2 = 3;
break;
case 'D': temp2 = 4;
break;
case 'E': temp2 = 5;
break;
case 'F': temp2 = 6;
break;
case 'G': temp2 = 7;
break;
}
System.out.print("isi : " + temp1 + " " +temp2 + " " + c[i] + " \n");
h+=Mat.graphI[temp1][temp2];
switch (c[i]) {
case 'A': temp1 = 1;
break;
case 'B': temp1 = 2;
break;
case 'C': temp1 = 3;
break;
case 'D': temp1 = 4;
break;
case 'E': temp1 = 5;
break;
case 'F': temp1 = 6;
break;
case 'G': temp1 = 7;
break;
}
i++;
}
System.out.print("Solusi : " + d + "total waktu yang dibutuhkan " + h + " \n");
}
public void branchNbound(){
int idx=1;
float cek=999;
char p='A';
char min;
char c[];
c=new char[20];
float b[];
b=new float[10];
c[0]='A';
while(isZero()==0){
min='A';
for(char i='A';i<'H';i++){
if(i!='H'&&S.graph[p][i]!=0){
b[i]=getBound(p,i);
if (b[i]<cek){
cek=b[i];
min=i;
}
}
}
cek=999;
c[idx]=min;
idx++;
empty(p,min);
for(char i='A';i<'H';i++){
b[i]=0;
}
p=min;
}
cetakSolusi(c,idx);
}
}
Main.java
package branchandbound;
/**
*
* @Rezaakhmadg
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Matrik BF =new Matrik();
for (char x='A';x<'H';x++){
for (char y='A';y<'H';y++){
System.out.print(BF.graph[x][y]+" ");
}
System.out.println('\n');
}
branchbound b = new branchbound();
bb keluaran = new bb();
// b.branchNbound();
keluaran = b.Solusi();
System.out.print("Solusi studi kasus dengan algoritma Branch and Bound : \n");
System.out.print("****************************************************** \n");
b.cetakSolusi(keluaran.hasil, keluaran.idx);
}
}
/**
*
* @Rezaakhmadg
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Matrik BF =new Matrik();
for (char x='A';x<'H';x++){
for (char y='A';y<'H';y++){
System.out.print(BF.graph[x][y]+" ");
}
System.out.println('\n');
}
branchbound b = new branchbound();
bb keluaran = new bb();
// b.branchNbound();
keluaran = b.Solusi();
System.out.print("Solusi studi kasus dengan algoritma Branch and Bound : \n");
System.out.print("****************************************************** \n");
b.cetakSolusi(keluaran.hasil, keluaran.idx);
}
}
Greedy TSP in Java
Greedy Implementation for TSP in java
Matrik.java
Greedy.java
package Greedy_TSP;
/**
*
* @Rezaakhmadg
*/
public class Greedy {
Matrik M=new Matrik();
int[][] hasil=new int[9][9];
int[] solusi=new int[10];
// char[] record=new char[100];
// public char ruteKota() {
//
//}
public Greedy(){
}
public void showHasil(){
String temp="";
int row=1;
int col=1;
int cc=0;
int rr=0;
int com=0;
int cek=2;
int jarak=0;
int i=0;
int j=0;
int ce=0;
solusi[1]=1;
for (i=1;i<=8;i++) {
for (j=1;j<=8;j++) {
hasil[i][j]=1;
}
}
while (cek<=8) {
if (cek>7) break;
com=1000;
col=2;
while (col<8) {
if (col>7) break;
ce=0;
if (M.graph[row][col]<com && row!=col && hasil[row][col]==1) {
com=M.graph[row][col];
cc=col;
ce=1;
}
col++;
}
// System.out.print("Solusi hasil colom: " + cc + " com : " + com +" cek: "+ col + " row: " + row +" \n");
jarak+=com;
for (i=1;i<8;i++) {
for (j=1;j<8;j++) {
if (j==cc) hasil[i][j]=0;
}
}
solusi[cek]=cc;
row=cc;
cek++;
}
jarak+=M.graph[cc][1];
solusi[cek]=1;
for (i=1; i<cek; i++) {
switch (solusi[i]) {
case 1: temp = temp+ "A ";
break;
case 2: temp = temp+ "B ";
break;
case 3: temp = temp+ "C ";
break;
case 4: temp = temp+ "D ";
break;
case 5: temp = temp+ "E ";
break;
case 6: temp = temp+ "F ";
break;
case 7: temp = temp+ "G ";
break;
}
if (i==cek-1){
System.out.print("Solusi : " + temp + "total waktu yang dibutuhkan " + jarak + " \n");
}
}
}
}
Main.java
Matrik.java
package Greedy_TSP;
*
* @author Rezaakhmadg
*/
public class Matrik {
int graph[][]=new int[8][8];
Matrik(){
graph[1][1]=0;graph[1][2]=75;graph[1][3]=60;graph[1][4]=50;graph[1][5]=215;graph[1][6]=130;graph[1][7]=95;
graph[2][1]=60;graph[2][2]=0;graph[2][3]=60;graph[2][4]=70;graph[2][5]=85;graph[2][6]=50;graph[2][7]=135;
graph[3][1]=40;graph[3][2]=55;graph[3][3]=0;graph[3][4]=130;graph[3][5]=95;graph[3][6]=100;graph[3][7]=55;
graph[4][1]=40;graph[4][2]=75;graph[4][3]=140;graph[4][4]=0;graph[4][5]=45;graph[4][6]=60;graph[4][7]=135;
graph[5][1]=20;graph[5][2]=85;graph[5][3]=100;graph[5][4]=40;graph[5][5]=0;graph[5][6]=90;graph[5][7]=95;
graph[6][1]=120;graph[6][2]=55;graph[6][3]=110;graph[6][4]=60;graph[6][5]=95;graph[6][6]=0;graph[6][7]=65;
graph[7][1]=80;graph[7][2]=135;graph[7][3]=60;graph[7][4]=130;graph[7][5]=95;graph[7][6]=60;graph[7][7]=0;
}
}
*
* @author Rezaakhmadg
*/
public class Matrik {
int graph[][]=new int[8][8];
Matrik(){
graph[1][1]=0;graph[1][2]=75;graph[1][3]=60;graph[1][4]=50;graph[1][5]=215;graph[1][6]=130;graph[1][7]=95;
graph[2][1]=60;graph[2][2]=0;graph[2][3]=60;graph[2][4]=70;graph[2][5]=85;graph[2][6]=50;graph[2][7]=135;
graph[3][1]=40;graph[3][2]=55;graph[3][3]=0;graph[3][4]=130;graph[3][5]=95;graph[3][6]=100;graph[3][7]=55;
graph[4][1]=40;graph[4][2]=75;graph[4][3]=140;graph[4][4]=0;graph[4][5]=45;graph[4][6]=60;graph[4][7]=135;
graph[5][1]=20;graph[5][2]=85;graph[5][3]=100;graph[5][4]=40;graph[5][5]=0;graph[5][6]=90;graph[5][7]=95;
graph[6][1]=120;graph[6][2]=55;graph[6][3]=110;graph[6][4]=60;graph[6][5]=95;graph[6][6]=0;graph[6][7]=65;
graph[7][1]=80;graph[7][2]=135;graph[7][3]=60;graph[7][4]=130;graph[7][5]=95;graph[7][6]=60;graph[7][7]=0;
}
}
Greedy.java
package Greedy_TSP;
/**
*
* @Rezaakhmadg
*/
public class Greedy {
Matrik M=new Matrik();
int[][] hasil=new int[9][9];
int[] solusi=new int[10];
// char[] record=new char[100];
// public char ruteKota() {
//
//}
public Greedy(){
}
public void showHasil(){
String temp="";
int row=1;
int col=1;
int cc=0;
int rr=0;
int com=0;
int cek=2;
int jarak=0;
int i=0;
int j=0;
int ce=0;
solusi[1]=1;
for (i=1;i<=8;i++) {
for (j=1;j<=8;j++) {
hasil[i][j]=1;
}
}
while (cek<=8) {
if (cek>7) break;
com=1000;
col=2;
while (col<8) {
if (col>7) break;
ce=0;
if (M.graph[row][col]<com && row!=col && hasil[row][col]==1) {
com=M.graph[row][col];
cc=col;
ce=1;
}
col++;
}
// System.out.print("Solusi hasil colom: " + cc + " com : " + com +" cek: "+ col + " row: " + row +" \n");
jarak+=com;
for (i=1;i<8;i++) {
for (j=1;j<8;j++) {
if (j==cc) hasil[i][j]=0;
}
}
solusi[cek]=cc;
row=cc;
cek++;
}
jarak+=M.graph[cc][1];
solusi[cek]=1;
for (i=1; i<cek; i++) {
switch (solusi[i]) {
case 1: temp = temp+ "A ";
break;
case 2: temp = temp+ "B ";
break;
case 3: temp = temp+ "C ";
break;
case 4: temp = temp+ "D ";
break;
case 5: temp = temp+ "E ";
break;
case 6: temp = temp+ "F ";
break;
case 7: temp = temp+ "G ";
break;
}
if (i==cek-1){
System.out.print("Solusi : " + temp + "total waktu yang dibutuhkan " + jarak + " \n");
}
}
}
}
Main.java
package Greedy_TSP;
/**
*
* @Rezaakhmadg
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
// Matrik baru =new Matrik();
//
// for (char x='A';x<'H';x++){
// for (char y='A';y<'H';y++){
// System.out.print(BF.graph[x][y]+" ");
// }
// System.out.println('\n');
// }
Greedy g = new Greedy();
// bb keluaran = new bb();
// keluaran = b.Solusi();
System.out.print("Solusi studi kasus dengan algoritma Greedy : \n");
System.out.print("****************************************************** \n");
g.showHasil();
}
}
/**
*
* @Rezaakhmadg
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
// Matrik baru =new Matrik();
//
// for (char x='A';x<'H';x++){
// for (char y='A';y<'H';y++){
// System.out.print(BF.graph[x][y]+" ");
// }
// System.out.println('\n');
// }
Greedy g = new Greedy();
// bb keluaran = new bb();
// keluaran = b.Solusi();
System.out.print("Solusi studi kasus dengan algoritma Greedy : \n");
System.out.print("****************************************************** \n");
g.showHasil();
}
}
Label:
Algoritma,
Greedy,
Hack,
Implementation,
Informatika,
Java,
memory,
Penjadualan,
Programming,
TSP
Friday, March 30, 2012
Desain Algoritma dan Analisis
Label:
Algoritma,
DAA,
Hack,
Informatika,
memory,
Penjadualan,
Programming
Subscribe to:
Posts (Atom)