Minggu, 09 Mei 2010

Format Gambar

MEMILIH FORMAT GAMBAR

Sebagai bloger atau webmaster, jika ingin memasukkan gambar ke blog/web, kita harus memilih tipe gambar yang akan kita pakai, apakah JPG, GIF, atau PNG. Jika format yang dipilih tidak sesuai dengan jenis gambarnya, gambar tersebut ukurannya akan lebih besar daripada yang semestinya, dan menyebabkan waktu loading blog/website kita lebih lama. Padahal, pengunjung suka terhadap blog atau web yang loadingnya cepat dan tidak boros bandwidth. Untuk itu, kita harus mengusahakan agar gambar-gambar dalam blog atau website kita memiliki ukuran sekecil mungkin. Caranya bagaimana?
Memilih tipe dan memperkecil ukuran gambar

Jika kita menyimpan gambar dengan program pengolah gambar seperti Adobe Photoshop atau Microsoft Paint, maka kita dapat memlilih format gambar yang sesuai melalui menu File -> Save As dan pilih tipe file yang kita inginkan. Khusus untuk Adobe Photoshop ada feature tambahan yang lebih baik lagi dengan menu File -> Save For Web. Dengan Adobe Photoshop ini, selain dapat memilih tipe gambar, kita juga dapat mengatur kompresi dan kualitas gambar. Berikut ini tipe-tipe gambar yang sering digunakan.
BMP (Bitmap)

Tipe file BMP umum digunakan pada sistem operasi Windows dan OS/2. Kelebihan tipe file BMP adalah dapat dibuka oleh hampir semua program pengolah gambar. Baik file BMP yang terkompresi maupun tidak terkompresi, file BMP memiliki ukuran yang jauh lebih besar daripada tipe-tipe yang lain.
File BMP cocok digunakan untuk:

* desktop background di windows.
* sebagai gambar sementara yang mau diedit ulang tanpa menurunkan kualitasnya.

File BMP tidak cocok digunakan untuk:

* web atau blog, perlu dikonversi menjadi JPG, GIF, atau PNG.
* disimpan di harddisk/flashdisk tanpa di ZIP/RAR, kecuali space tidak masalah bagi Anda.

JPG/JPEG (Joint Photographic Experts Group)

Tipe file JPG sangat sering digunakan untuk web atau blog. File JPG menggunakan teknik kompresi yang menyebabkan kualitas gambar turun (lossy compression). Setiap kali menyimpan ke tipe JPG dari tipe lain, ukuran gambar biasanya mengecil, tetapi kualitasnya turun dan tidak dapat dikembalikan lagi. Ukuran file BMP dapat turun menjadi sepersepuluhnya setelah dikonversi menjadi JPG. Meskipun dengan penurunan kualitas gambar, pada gambar-gambar tertentu (misalnya pemandangan), penurunan kualitas gambar hampir tidak terlihat mata.
File JPG cocok digunakan untuk:

* gambar yang memiliki banyak warna, misalnya foto wajah dan pemandangan.
* gambar yang memiliki gradien, misalnya perubahan warna yang perlahan-lahan dari merah ke biru.

File JPG tidak cocok digunakan untuk:

* gambar yang hanya memiliki warna sedikit seperti kartun atau komik.
* gambar yang memerlukan ketegasan garis seperti logo.

contoh gambar jpg kualitas tinggi

Gambar 1. Contoh gambar kaya warna dengan JPG kualitas tinggi (32kb)

contoh gambar jpg kualitas rendah

Gambar 2. Contoh gambar kaya warna dengan JPG kualitas rendah (14kb)
GIF (Graphics Interchange Format)

Tipe file GIF memungkinkan penambahan warna transparan dan dapat digunakan untuk membuat animasi sederhana, tetapi saat ini standar GIF hanya maksimal 256 warna saja. File ini menggunakan kompresi yang tidak menghilangkan data (lossles compression) tetapi penurunan jumlah warna menjadi 256 sering membuat gambar yang kaya warna seperti pemandangan menjadi tidak realistis. Pada program MS Paint, tidak ada fasilitas penyesuaian warna yang digunakan (color table) sehingga menyimpan file GIF di MS Paint seringkali menghasilkan gambar yang terlihat rusak atau berubah warna. Pada program pengolah gambar yang lebih baik, seperti Adobe Photoshop, color table bisa diatur otomatis atau manual sehingga gambar tidak berubah warna atau rusak.
File GIF cocok digunakan untuk:

* gambar dengan jumlah warna sedikit (dibawah 256).
* gambar yang memerlukan perbedaan warna yang tegas seperti logo tanpa gradien.
* gambar animasi sederhana seperti banner-banner iklan, header, dan sebagainya.
* print shoot (hasil dari print screen) dari program-program simple dengan jumlah warna sedikit.

File GIF tidak cocok digunakan untuk:

* gambar yang memiliki banyak warna seperti pemandangan.
* gambar yang didalamnya terdapat warna gradien atau semburat.

ilustrasi gambar gif transparan

Gambar 3. Ilustrasi gambar transparan dengan GIF pada background kotak-kotak

contoh gambar gif animasi 01contoh gambar gif animasi 02

Gambar 4 & 5. Gambar GIF animasi
PNG (Portable Network Graphics)

Tipe file PNG merupakan solusi kompresi yang powerfull dengan warna yang lebih banyak (24 bit RGB + alpha). Berbeda dengan JPG yang menggunakan teknik kompresi yang menghilangkan data, file PNG menggunakan kompresi yang tidak menghilangkan data (lossles compression). Kelebihan file PNG adalah adanya warna transparan dan alpha. Warna alpha memungkinkan sebuah gambar transparan, tetapi gambar tersebut masih dapat dilihat mata seperti samar-samar atau bening. File PNG dapat diatur jumlah warnanya 64 bit (true color + alpha) sampai indexed color 1 bit. Dengan jumlah warna yang sama, kompresi file PNG lebih baik daripada GIF, tetapi memiliki ukuran file yang lebih besar daripada JPG. Kekurangan tipe PNG adalah belum populer sehingga sebagian browser tidak mendukungnya.
File PNG cocok digunakan untuk:

* gambar yang memiliki warna banyak.
* gambar yang mau diedit ulang tanpa menurunkan kualitas.

File PNG tidak cocok digunakan untuk:

* gambar yang jika dikompress dengan JPG hampir-hampir tidak terlihat penurunan kualitasnya.

ilustrasi png dalam format jpg

Gambar 6. Ilustrasi gambar transparan dengan PNG pada background kotak-kotak (hanya ilustrasi, gambar di atas bertipe JPG).
Raster vs Vektor

Semua tipe file gambar yang disebutkan di atas (BMP, JPG, GIF, dan PNG) termasuk jenis gambar raster (atau disebut juga Bitmap). Gambar raster terdiri dari titik-titik pixel yang jumlahnya tetap. Jika diperbesar, baik di-zoom atau diubah ukuran gambarnya, gambar akan terlihat pecah atau tidak sebagus aslinya. Jenis gambar yang lain adalah gambar vektor. Gambar vektor terdiri dari garis, bentuk, bidang, dan warna yang dituliskan dalam instruksi-instruksi matematis. Jika diperbesar, gambar vektor kualitasnya tetap. Aplikasi pengolah gambar vektor misalnya CorelDraw (CDR) dan Adobe Ilustrator (AI). Gambar vektor saat ini tidak dapat digunakan di web atau browser.

Demikian penjelasan mengenai tipe-tipe gambar, dengan memilih tipe gambar yang sesuai, ukuran file gambar jadi lebih kecil, dan pengunjung web/blog kita tidak perlu menunggu lama pada saat loading dan menghemat bandwidth pengunjung, sehingga pengunjung akan lebih kerasan singgah di web atau blog kita.



http://tutorialgratis.net/2008/12/19/tips-memilih-format-gambar-bmp-jpg-gif-atau-png/

Senin, 19 April 2010

Teknik Searching

Teknik Search

Abstrack
Tingkatan-cari pertama adalah efektif dalam memecahkan hard kombinatorial
masalah, tapi kalau masalah ruang telah
struktur grafik node yang sama dapat dicari
banyak kali. Hal ini dapat meningkatkan ukuran
pencarian secara eksponensial. Kami mencari dua teknik
yang mencegah ini: duplikat deteksi dan duplikat
menghindar. Kami menggambarkan teknik-teknik pada
masalah treewidth, sebuah optimasi kombinatorial
masalah dengan aplikasi untuk berbagai penelitian
daerah. Hambatan untuk treewidth sebelumnya
algoritma adalah kebutuhan memory yang besar. Kami mengembangkan
duplikat teknik penghindaran untuk treewidth
dan menunjukkan bahwa secara signifikan performanya melebihi
algoritma lain bila memori terbatas. Selain itu,
kita dapat menemukan, untuk pertama kalinya,
treewidth beberapa grafik benchmark keras.

1 Pendahuluan

Sebuah teknik yang efektif untuk memecahkan banyak optimasi kombinatorial
masalah adalah pencarian heuristik melalui abstrak
masalah ruang. Ruang masalah dapat diwakili oleh
grafik, di mana node sesuai dengan negara dan tepi sesuai
untuk operasi. Grafik pencarian dapat mencakup banyak
jalan dari awal untuk setiap simpul tunggal. Ketika node yang sama
dicapai dari beberapa jalur dalam pencarian, kita lihat sebagai
duplikat node. Adanya duplikat dapat mengarah ke
eksponensial peningkatan ukuran pencarian jika tidak benar
dikelola. Tingkatan-cari pertama adalah terutama rentan terhadap eksplorasi
banyak duplikat, karena, dalam bentuk yang paling sederhana, itu
membuat upaya penghapusan tidak di duplikat.
Dua metode menghilangkan duplikasi duplikat node
duplikat deteksi dan penghindaran. Gandakan deteksi menggunakan
daftar untuk menyimpan node diperluas. Ketika sebuah node baru dibuat,
kita cek terhadap daftar untuk melihat apakah node merupakan duplikat dan
apakah harus dibuang. Gandakan deteksi baik
dipelajari dan biasanya sederhana untuk diimplementasikan.
Tipe lain dari duplikat teknik eliminasi duplikat
menghindar. Sedangkan duplikat deteksi menghasilkan sebuah node
dan memeriksanya terhadap daftar, tujuan menghindari duplikasi
adalah untuk mencegah duplikat dari yang dihasilkan di pertama
tempat. Dalam makalah ini kami akan menjelaskan metode untuk menghindari duplikasi.
Kami menunjukkan bagaimana teknik menghindari duplikasi dapat
dikombinasikan dengan teknik pemangkasan lain untuk mengurangi ukuran
pencarian, dan kami menunjukkan bagaimana menghindari perangkap dalam pelaksanaan
duplikat penghindaran yang dapat membuat pencarian tidak dapat diterima.
Kita diskusi tentang teknik eliminasi duplikat akan
dalam konteks masalah tertentu: menemukan treewidth tepat.
Treewidth adalah properti dasar dari sebuah grafik dengan signifikan
implikasi untuk beberapa bidang kecerdasan buatan
penelitian. Alasan untuk fokus pada treewidth adalah bahwa alam
cari ruang untuk menggunakan fungsi tepi biaya maksimum. Sebagai
kita bahas pada bagian selanjutnya, dalam sebuah pencarian berulang-memperdalam
pada masalah dengan fungsi tepi biaya maksimum, setiap duplikat
node dapat dibuang. Hal ini membuat masalah ini
cocok untuk mempelajari teknik eliminasi duplikat.
2 Treewidth dan Cari Edge Biaya Maksimum
2,1 Treewidth Definisi dan Aplikasi
Kami menyajikan definisi treewidth dalam hal titik optimal
penghapusan pesanan. Perhatikan bahwa grafik yang dibahas di sini adalah
tanpa arah dan tanpa diri-loop.
Menghilangkan sebuah node dari grafik adalah proses penambahan
keunggulan antara setiap pasangan dari tetangga titik yang yang
belum berdekatan, lalu menghapus titik dan semua tepi
insiden itu. Perintah penghapusan simpul adalah perintah total
yang untuk menghilangkan semua titik dalam grafik. Luas
dari perintah penghapusan didefinisikan sebagai tingkat maksimum
dari titik manapun ketika dieliminasi dari grafik. Akhirnya,
yang treewidth dari suatu graf adalah lebar minimum atas segala kemungkinan
penghapusan perintah, dan urutan yang lebar adalah
treewidth adalah perintah eliminasi titik optimal.
Mencari treewidth grafik adalah pusat untuk pertanyaan banyak dan
operasi di berbagai bidang penelitian kecerdasan buatan,
termasuk penalaran probabilistik, kepuasan kendala, dan
representasi pengetahuan. Daerah-daerah penelitian pada umumnya menggunakan
grafik untuk mewakili beberapa informasi tentang dunia dan
melakukan berbagai query dan operasi pada grafik. Pengetahuan
dengan treewidth grafik, dan memiliki eliminasi optimal
agar dapat secara signifikan mempercepat query ini. Contoh
termasuk eliminasi ember untuk inferensi dalam Bayesian
jaringan, dan clustering jointree untuk kepuasan kendala
(Dibahas dalam [Bodlaender, 2005; Dow dan Korf, 2007]).
Sementara beberapa kelas graf sangat terstruktur telah dikenal
treewidth [Bodlaender, 2005], menentukan treewidth dari
grafik yang umum adalah NP-lengkap [Arnborg et al., 1987].
480

2.2 Eliminasi Vertex Order Space Cari
Sebuah ruang pencarian alami untuk treewidth melibatkan pembangunan yang optimal
titik eliminasi perintah. Pertimbangkan untuk mencari
Agar optimal eliminasi grafik di sebelah kiri pada Gambar
1; ruang cari yang sesuai adalah di sebelah kanan. Menghilangkan
satu set vektor hasil dalam grafik yang sama terlepas dari
urutan vertex dieliminasi. Dengan demikian, sebuah negara bagian di
ruang pencarian ini dapat diwakili oleh unordered set dari
vertex dieliminasi. Pada node root, tidak ada node telah
dieliminasi, dan, di node tujuan, ketiga node telah
dieliminasi. Untuk transisi dari satu node ke yang lain, titik sudut adalah
dieliminasi dari grafik. Biaya transisi, yang label
tepi terkait dalam ruang pencari, adalah derajat
satu titik ketika dieliminasi. Sebuah solusi merupakan jalur
urutan eliminasi tertentu, dan lebar agar adalah
biaya maksimum di tepi jalan solusi.
Biaya Maksimum 2,3 Edge Pendalaman Perancangan
Sebuah detail penting dari order ruang pencarian penghapusan vertex
adalah bahwa solusi diukur dengan biaya maksimum tepi. Paling
masalah dalam literatur pencari menggunakan fungsi biaya aditif,
mana jalan dievaluasi dengan cara menjumlahkan biaya sisi. Bahkan,
algoritma pencarian dapat berperilaku cukup berbeda dengan maksimum
versus fungsi biaya aditif [Dow dan Korf, 2008].
Iteratif memperdalam (ID) adalah sebuah teknik pencarian di mana
pencarian dilakukan sebagai rangkaian dari iterasi dengan peningkatan
nilai cutoff [Korf, 1985]. Setiap iterasi pertama kedalaman
cari di mana solusi hanya dieksplorasi jika biaya mereka tidak
melebihi cutoff. Jika suatu iterasi selesai tanpa menemukan
solusi, maka semua solusi harus biaya lebih dari cutoff,
cutoff sehingga meningkat dan pencarian diulang. ID
efektif untuk masalah-masalah di mana waktu yang diperlukan untuk mencari
tumbuh secara signifikan dengan setiap peningkatan cutoff.
ID biasanya diterapkan untuk masalah dengan biaya aditif
fungsi, di mana, dalam sebuah iterasi tunggal, mungkin perlu
memperluas node yang sama lebih dari sekali. Ini karena, dengan
biaya tambahan, apakah solusi ditemukan dari sebuah node tergantung
pada biaya jalur dibawa ke node dan pencarian
ruang di bawah simpul tersebut. Jadi, jika jalan-biaya yang lebih rendah ditemukan
ke node yang telah diperluas, node harus
diperluas lagi untuk melihat apakah jalan baru mengarah ke solusi.
Berbeda dengan kasus biaya aditif, ID pada maksimum
biaya tepi ruang pencarian tidak perlu memperluas node yang sama
lebih dari sekali per iterasi. Perhatikan bahwa, dengan maksimum
tepi biaya, biaya jalan ke simpul tidak penting,
sepanjang tidak melebihi cutoff. Jika kita menghasilkan sebuah node
yang sebelumnya diperluas dan kami belum menemukan
solusi, maka kita tahu tidak ada jalan berlaku dari simpul tersebut
ke node tujuan. Jadi, bahkan jika ada jalan yang lebih rendah-biaya untuk
node itu, juga tidak akan mengarah ke solusi. Oleh karena itu, dalam
jalannya iterasi, jika kita pernah menghasilkan node yang
sebelumnya diperluas, kita bisa memangkas itu.
3 Teknik untuk Duplicate Eliminasi
Ruang pencarian untuk masalah lain treewidth dan banyak adalah
grafik, sehingga node yang sama dapat dicapai dari banyak
jalur yang berbeda. Sebuah pencarian mendalam-pertama grafik sederhana akan
menyebabkan setiap node yang akan dihasilkan sekali untuk setiap jalur itu.
Dalam mencari treewidth dari suatu graf dengan N,
cari grafik telah 2N node yang unik, sedangkan depth-first search
akan menghasilkan O (N!) node. Setelah node telah dihasilkan
sekali, kita lihat setiap generasi masa depan bahwa node sebagai
duplikat. Pada bagian ini kita membahas teknik untuk menduplikasi
penghapusan.
Gandakan deteksi mengacu pada metode untuk menghilangkan duplikat
node ekspansi oleh caching sebelumnya diperluas
node dan memeriksa setiap node baru terhadap cache. Di
pencarian mendalam-pertama, duplikat deteksi biasanya dicapai
dengan tabel hash, disebut sebagai tabel transposisi,
ke setiap node yang diperluas dimasukkan. Dalam hal
dari treewidth, kunci ke meja adalah bitstring panjang | V |
dengan sedikit mengatur node yang sesuai jika telah dieliminasi
dari grafik. Ketika sebuah node baru dibuat, kami memeriksa
tabel transposisi untuk melihat apakah itu termasuk yang sesuai
bitstring. Jika tidak, maka node tersebut dihapus. Pada masalah sulit
tidak akan ada cukup memori untuk transposisi yang
tabel untuk menyimpan setiap node yang diperluas. Bila memori
kelelahan, algoritma dapat menggunakan skema pengganti, seperti
sebagai sedikit-terakhir digunakan (LRU), untuk memberikan ruang bagi node baru.
Teknik lain untuk menghilangkan duplikat node melibatkan
mengakui ketika ruang pencarian mencakup beberapa jalur untuk
simpul yang sama dan mencegah semua kecuali satu dari mereka dari
dieksplorasi. Kita lihat ini sebagai menghindari duplikasi, karena
mencegah duplikat dari node yang dihasilkan. Duplikat
teknik menghindari didasarkan pada identifikasi set duplikat
urutan operator. Masing-masing mewakili urutan yang berbeda
jalan antara dua node dalam ruang pencarian. Metode
untuk mengidentifikasi urutan duplikat operator dan menggunakan mereka
untuk menghindari duplikasi node yang khusus untuk masalah tertentu.
Selanjutnya, kami akan menunjukkan bagaimana hal ini dilakukan untuk treewidth. Kami membedakan
antara dua jenis duplikat penghindaran: deduktif
menghindari duplikasi, keberadaan dari yang dapat disimpulkan
dari deskripsi ruang masalah dan induktif duplikat
penghindaran, yang ditemukan dalam pencarian.
4 deduktif Gandakan Penghindaran
Deduktif menghindari duplikat melibatkan memeriksa masalah
ruang untuk struktur yang memungkinkan kita untuk menghindari jalan yang berlebihan
untuk node. Gogate dan Dechter [2004] aturan ini beberapa
yang melakukannya di order ruang eliminasi cari
treewidth. Peraturan-peraturan ini didasarkan pada kenyataan bahwa menghilangkan
481
simpul tidak menambah atau menghapus ujung ke vertex untuk yang
tidak berdekatan. Dengan demikian, sepasang vertex non-berdekatan dapat
dieliminasi dalam rangka baik pada biaya yang sama. Misalkan kita telah
dua titik yang berdekatan non-v dan w, dan memerintahkan atas
vertex seperti yang v w. < Kami akan mencari solusi mana
v dihilangkan sebelum w, tapi kami akan memangkas beberapa solusi
dimana w tereliminasi sebelum v. Jika w dihilangkan, kita akan
v tidak memungkinkan untuk dihilangkan karena tidak ada panjang vertex berdekatan
untuk v dieliminasi untuk sementara. Jika w dihilangkan,
dan kemudian beberapa titik bersebelahan dengan v dieliminasi, efeknya
menghapus v tidak lagi sama seperti sebelum kami
dieliminasi w. Jadi, dalam hal ini, kita akan menghilangkan v setelah w.
Kita akan lihat proses menghindari duplikasi ini sebagai Independen
Pemangkasan Vertex kaidah (IVPR). Hal ini dijelaskan lebih
secara resmi sebagai Teorema 6.1 dan 6.2 dari Gogate dan Dechter
[2004], di mana lebih rinci dapat ditemukan. Dalam kerja terkait,
Bosnacki et al. [2007] menyajikan sebuah metode yang lebih umum untuk
berlebihan untuk menghindari jalan node diberikan sebuah kemerdekaan
hubungan pada operator atau tindakan.
Percobaan kami (Bagian 8) menunjukkan bahwa IVPR menghilangkan
duplikat dalam jumlah besar, meskipun masih banyak. Berikutnya
bagian upaya untuk memangkas beberapa duplikat yang tersisa.
5 Induktif Gandakan Penghindaran
Seperti kita lihat dalam bagian sebelumnya, IVPR menghindari duplikat
karena non-vertex yang berdekatan menghilangkan karena semua permutasi
orang eliminasi akan memiliki biaya yang sama. Sayangnya,
vertex ketika mempertimbangkan yang berdekatan satu sama
lain, kita tidak lagi tahu, sebuah priori, bagaimana biaya yang berbeda
permutasi terkait. Pada titik tertentu dalam sebuah perulangan dari ID
pencarian, jika biaya dari salah satu permutasi melebihi
cutoff maka urutan operator tidak valid. Jika lebih dari
satu tidak melampaui cutoff, kemudian mereka mewakili duplikat. Di
bagian ini, kita membahas teknik untuk mengenali duplikasi yang valid
operator urutan dan menghindari semua kecuali satu dari mereka.
Kita lihat ini sebagai induktif menghindari duplikasi, karena alih-alih
mengandalkan pada pengetahuan apriori tentang ruang pencarian,
ia menghindari duplikat dengan informasi yang dikumpulkan selama pencarian.
5,1 A Prosedur Umum
Misalkan, di beberapa titik dalam pencarian ID, kami menyadari bahwa
kami telah menerapkan beberapa urutan dari operator dari satu set duplikat
urutan operator. Karena urutan ini telah berhasil
dilaksanakan, biaya tidak harus telah melampaui cutoff
nilai. Meskipun mungkin ada duplikat lainnya di urutan
set dengan harga yang rendah, pencarian kami adalah ID dan kami hanya peduli
bahwa biaya tidak melebihi cutoff. Oleh karena itu, kami menyatakan
urutan saat ini cukup "baik," dan, untuk sisa
pencarian, menghindari semua duplikat lain urutan di set. Kami mencapai
ini dengan menyimpan "cukup baik" mereka sequences
ditemukan. Saat pencarian berlangsung, kami dapat memeriksa apakah
setiap anak dari simpul saat ini akan merupakan duplikat
beberapa "cukup baik" urutan. Jika tidak kita bisa memangkas bahwa
anak, dan menghindari menghasilkan duplikat yang sesuai.
Menyimpan setiap "cukup baik" mungkin urutan jumlah yang secara eksplisit
menyimpan ruang pencarian seluruh, yang layak di
masalah yang menarik. Hal ini dapat diatasi dengan membatasi
lingkup duplikat menghindar.

5,2 Induktif Gandakan Penghindaran untuk Treewidth
Pertimbangkan mencari treewidth dari grafik pada Gambar
2, dengan urutan berikut sewenang-wenang dari vertex:
A urutan untuk menghilangkan vertex A, C, dan E; dan IVPR
menghindari empat dari mereka, meninggalkan: (A, C, E) dan (C, E, A). Itu
duplikat yang tidak IVPR hindari adalah karena simpul yang berdekatan,
dalam hal ini A dan E. Jadi, dua sisa duplikat
urutan mewakili dua permutasi dari vertex berdekatan.
Biaya urutan pertama adalah max (3, 2, 2) = 3, dan
biaya yang kedua adalah max (2, 2, 2) = 2. Dalam sebuah iterasi
pencarian ID, jika cutoff = 2 maka hanya urutan kedua adalah
dieksplorasi dan tidak ada duplikasi. Di lain pihak, jika
cutoff ≥ 3 kemudian urutan kedua adalah valid dan berlebihan.
Kami akan mencoba untuk menghindari duplikasi urutan yang ditinggalkan oleh
IVPR. Urutan ini meliputi permutasi semua node yang berdekatan,
Oleh karena itu kita akan mengacu ke teknik menghindari duplikasi ini
sebagai Peraturan Vertex Pemangkasan Dependent (DVPR). Itu
aspek kunci dari pelaksanaan teknik ini adalah (1) mengidentifikasi
dan menyimpan "cukup baik" urutan, (2) menentukan kapan
menghilangkan sebuah node akan menyebabkan duplikat dan dengan demikian harus
akan dipangkas, dan (3) menentukan kapan disimpan "cukup baik"
urutan berlaku.
Tugas pertama adalah mengidentifikasi dan menyimpan "cukup baik" urutan.
Setelah node n dihasilkan dengan menghilangkan sebuah node
v, kita kaji eliminasi titik yang membentuk
jalan dibawa ke node n. Kami mengidentifikasi urutan tergantung
vertex, yaitu, v, node berdekatan dengan v, dan titik
berdekatan dengan vertex terikat lainnya. Sebagai contoh, katakanlah kita
hanya dihasilkan simpul yang mengikuti dari urutan eliminasi
(A C,, E) dalam Gambar 2. Kami kemudian mengidentifikasi (A, E) sebagai
urutan vertex tergantung. Kami mengabaikan penghapusan
C karena tidak berdampak terhadap A atau E. Setelah tergantung
urutan titik diidentifikasi, kita menganggapnya tidak cukup "baik"
urutan untuk menghilangkan simpul disertakan, dan kami menyimpannya
dalam tabel hash. Kunci untuk tabel hash adalah himpunan vertex
dalam urutan, sehingga urutan duplikat memiliki kunci yang sama.
Tugas kedua adalah dengan menggunakan "disimpan cukup baik" urutan
untuk menghindari duplikasi. Jika kita telah menentukan bahwa beberapa
urutan adalah "cukup baik," maka setiap permutasi lain
termasuk vertex akan menghasilkan sebuah duplikat. Ketika memperluas
sebuah node, sebelum masing-masing menghasilkan anak-anak kita cek ke
melihat apakah mereka sesuai dengan urutan duplikat. Untuk anak
node bahwa hasil dari menghilangkan titik v, kita append v
sampai akhir urutan eliminasi yang membentuk
path ke node saat ini. Kemudian kita menemukan urutan depen-
482
penyok vertex yang mencakup v, sama seperti kita bahas di atas. Kita
kemudian mencari urutan bahwa dalam tabel hash. Jika urutan
dengan tombol yang sama ditemukan, maka itu baik sama dengan
sekarang urutan atau duplikat dari urutan saat ini. Jika
itu merupakan duplikat, maka kita bisa memangkas yang sesuai anak
node. Melanjutkan contoh di atas, katakanlah kita telah disimpan
"Cukup baik" urutan (A, E), dan simpul saat ini dalam
pencarian sesuai dengan grafik pada Gambar 2 dengan tanpa simpul
dieliminasi. Jika kita menghilangkan titik E, maka kita akan melihat bahwa
menghilangkan Sebuah berikutnya adalah redundan dengan urutan "cukup baik".
Di sisi lain, jika A adalah dieliminasi pertama, kita akan melihat
bahwa E menghilangkan berikutnya adalah sama dengan cukup "baik"
urutan, sehingga kita dapat melanjutkan dan menghilangkannya.
Tugas akhir yang diperlukan untuk deskripsi kami DVPR adalah
untuk menentukan kapan sebuah "disimpan cukup baik" urutan valid.
Kami menganggap urutan valid ketika kita tahu bahwa hal itu dapat dilaksanakan
tanpa dipangkas oleh cutoff. Jadi, urutan
berlaku sepanjang bagian yang relevan dari grafik adalah sama
karena mereka ketika urutan ditemukan. Bagian-bagian
termasuk semua node berdekatan dengan sebuah node dalam urutan tersebut. Jika salah satu
vertex tersebut telah dieliminasi, tidak termasuk dalam
urutan sendiri, maka biaya dan efek dari pelaksanaan
urutan akan berubah. Ketika ini terjadi kita tidak lagi
tahu apakah urutan yang "cukup baik," karena itu kami membersihkan
dari tabel hash. Jika beberapa titik yang tidak berdekatan dengan
apapun dalam urutan "cukup baik" dihilangkan, maka urutan
tetap berlaku. Kembali ke contoh di atas, katakanlah
(A, E) adalah "cukup disimpan" urutan, dan kita menghilangkan
E dan kemudian C dari grafik pada Gambar 2. Karena C adalah bersebelahan
untuk tidak A atau E bila dieliminasi, yang cukup "baik"
Urutan tetap berlaku dan akan digunakan untuk mencegah penghapusan
A berikutnya. Di sisi lain, mengingat grafik pada Gambar 2, jika kita
menghilangkan B, maka lingkungan A telah berubah dan
"Cukup baik" urutan tidak berlaku lagi.
5,3 Terkait Pekerjaan
Taylor dan Korf [1993] menggambarkan teknik yang menggunakan
cari-luasnya pertama yang menemukan duplikat urutan operator.
Mereka kemudian membangun mesin finite state yang mengakui
urutan orang-orang, seperti itu, selama pencarian mendalam-dulu, mereka
dapat menghindari mengeksekusi mereka. Mereka menerapkan teknik ke
teka-teki geser ubin. Teknik ini membuat asumsi tentang
ruang masalah yang tidak tahan untuk treewidth, seperti yang
operator memiliki biaya yang sama di seluruh pencarian. Dengan demikian,
teknik ini tidak langsung berlaku untuk treewidth.
6 Gandakan Penghindaran & Kriteria Dominasi
Dalam pencarian ID sederhana, setiap teknik yang menghilangkan semua duplikat,
apakah menduplikasi atau menggandakan penghindaran deteksi,
akan memperluas node set yang sama, meskipun mereka mungkin
dicapai dengan jalan yang berbeda. Jika pencarian ID ditingkatkan
dengan aturan pemangkasan lain, maka benar-benar dapat menghindari duplikasi
memperluas node kurang dari duplikat deteksi. Satu seperti
jenis kaidah pemangkasan adalah dominasi kriteria, yang mengatakan bahwa
node beberapa mengarah pada solusi yang tidak lebih buruk daripada solusi apapun
berikut beberapa node lain, yaitu, simpul pertama mendominasi
node kedua. Simpul didominasi kemudian dapat dipangkas.
Ketika dikombinasikan dengan dominasi kriteria, menghindari duplikasi
dapat menyebabkan memperluas node lebih sedikit daripada yang duplikat
deteksi dengan dominasi kriteria yang sama. Ini hasilnya
fakta bahwa menghindari duplikasi mencegah duplikat dari
yang dihasilkan, sementara duplikat deteksi tidak. Mempertimbangkan
n beberapa node yang dapat dihasilkan oleh dua orang tua yang potensial,
p1 dan p2, dan mengasumsikan bahwa kedua orang tua yang dihasilkan dan
diperluas. Anggaplah bahwa dominasi kriteria menyebabkan n untuk
akan dihapus ketika dihasilkan oleh p1, tetapi tidak ketika dihasilkan oleh
p2. Gandakan deteksi pasti akan tetap menghasilkan n melalui p2.
Sejak duplikat menghindari hanya menghasilkan n dari orangtua tunggal,
jika orang tua yang p1 maka tidak akan menghasilkan n sama sekali.
Jika tidak diterapkan secara benar kombinasi ini dapat mengakibatkan
overzealous pemangkasan, sehingga pencarian tidak dapat diterima. A
dominasi kriteria menyatakan bahwa node dapat dipangkas karena
ada node lain yang setidaknya sama baik. Gandakan penghindaran
menyatakan bahwa node dapat dipangkas karena ada yang lain
jalan itu yang baik itu atau akan dieksplorasi. Pemangkasan ini
aturan bisa konflik jika node tidak dihasilkan karena dominasi
kriteria dipangkas orang tua yang menghindari duplikasi
akan memungkinkan untuk menghasilkan itu. Ini bisa diperbaiki dengan memastikan bahwa
menghindari duplikasi pernah mencegah sebuah node dari menghasilkan
jika orang tua anak yang akan memungkinkan untuk menghasilkan anak yang
telah dihapus oleh dominasi kriteria. Dalam percobaan kami,
dibahas dalam Bagian 8, kita beradaptasi IVPR dan DVPR untuk memasukkan
koreksi ini.
7 Ada Alat untuk Pencarian Treewidth
Aturan berguna pemangkasan, yang terdekat Vertex Kriteria Dominasi
(AVDC), didasarkan pada suatu hasil disebabkan Dirac (lihat
Gogate dan [Dechter 2004]). Hal ini menyatakan bahwa setiap graf memiliki
titik optimal agar penghapusan tanpa simpul muncul berdekatan
berturut-turut sampai grafik menjadi sebuah klik. Dengan demikian,
jika node saat ini dicapai dengan menghilangkan titik v, kita
dapat memangkas semua anak yang hasil dari menghilangkan titik apapun
w yang berdekatan dengan v, kecuali grafik adalah sebuah klik.
Pemangkasan aturan lain yang berguna adalah Pengurangan Grafik Dominasi
Kriteria (Puslitbang Geologi). Bodlaender et al. [2001] dikembangkan
beberapa kriteria untuk mengidentifikasi ketika graf dapat dikurangi
dengan segera menghilangkan beberapa set vertex tanpa meningkatkan
yang treewidth. Ketika kriteria ini, dikenal sebagai simplicial
dan aturan hampir simplicial, mengidentifikasi titik untuk eliminasi,
kita bisa memangkas semua anak-anak lain dari node saat ini.
Yang ada negara-algoritma-the-art untuk treewidth adalah
Breadth-First heuristik Treewidth (BFHT), dikembangkan oleh
Dow dan Korf [2007], dan ditingkatkan dengan metode yang lebih cepat
menurunkan grafik yang terkait dengan simpul, dikembangkan oleh Zhou
dan Hansen [2008]. Sebuah hambatan adalah komputasi di BFHT
bahwa setiap kali sebuah node diperluas itu harus berasal yang sesuai
grafik. Algoritma yang asli selalu berasal dari
node grafik dari grafik asli. Zhou dan Hansen diamati
bahwa hal itu bisa berasal dari grafik yang terkait dengan
diperluas node terakhir. Mereka menggunakan struktur data besar untuk
memastikan bahwa node dengan grafik serupa diperluas secara berurutan.
Sayangnya, hal ini meningkatkan memori algoritma itu
persyaratan "hingga sepuluh kali" Kami membuang struktur data ini.
dan sebaliknya mengurutkan node oleh perwakilan negara mereka: sebuah
bitstring mana bit yang dibuat jika titik yang bersangkutan akan dieliminasi.
Metode ini secepat metode memori berbasis
dan tanpa kebutuhan memory yang besar.

Luas pertama pencarian

luasnya Pencarian pertama menggunakan struktur data Antrian (antrian adalah sebuah urutan yang "pertama, keluar pertama", yaitu, Anda menghapus item dari antrian dalam urutan yang sama bahwa mereka ditambahkan). Jika kita ingin melakukan pencarian pertama yang luas dari node "0" ke node "9", kita mulai dengan menempatkan semua node terhubung ke node "0" pada antrian. Lalu kita tambahkan node terhubung ke item yang saat ini dalam antrian, dan melanjutkan proses ini sampai kita sampai pada node tujuan.

Untuk banyak aplikasi, Anda ingin menambahkan heuristik untuk luas pencarian pertama dengan mengontrol urutan "di mana node ditambahkan ke antrian. Sebagai contoh, mari kita lihat lagi pada jaringan contoh kita:

Jika kita mulai dari node "4" dan mencari node "9", maka pertama-tama kita akan menambahkan node berikut ke antrian:

* 2
* 5
* 6

Kelas BreadthFirstSearch menambahkan node ini dalam urutan acak. Namun, Anda mungkin ingin untuk menambah (ini merupakan latihan bagi pembaca) heuristik bahwa Anda menambahkan node itu lebih dekat ke tujuan simpul pertama. Untuk masalah yang paling, yaitu pemesanan node ditambahkan ke antrian akan memiliki efek dramatis terhadap kinerja. Jika kita memerintahkan node terhubung ke node "4" dalam rangka kedekatan ke node tujuan "9", maka kita akan menambahkannya dalam urutan ini:

* 6
* 5
* 2

Metode yang didefinisikan dalam kelas BreadthFirstSearch

Kelas BreadthFirstSearch berasal dari SearchApplet kelas dan mendefinisikan metode berikut:

* Init - metode ini mendefinisikan jaringan tes, maka panggilan kelas SearchApplet metode init super.

* Int [] findPath (int node_1, int node_2) - ini adalah metode untuk menemukan jalan antara dua node tertentu dengan menggunakan luas pencarian pertama seperti yang dijelaskan dalam teks. Nilai kembali untuk metode ini adalah array dari indeks node.
* Batin Antrian kelas - kelas utilitas ini menerapkan standar Antrian struktur data, dan digunakan oleh findPath metode.
* Int [] connected_nodes (node int) - ini adalah metode pembantu disebut oleh findPath yang menemukan semua node terhubung ke node tertentu.

int [] copy_path (int [] jalan, num_to_copy int) - ini adalah metode pembantu disebut oleh findPathHelper bahwa salinan sebuah array jalan.

Ini menyimpulkan "buku saya" tentang teknik pencarian sederhana di Jawa. Sungguh, aku baru saja menelusuri permukaan benda ini, tetapi saya berharap bahwa membaca buku ini telah memberikan Anda dengan kedua beberapa pemahaman tentang teknik pencarian, dan sebagian Jawa Open Source kode sumber yang dapat Anda gunakan untuk kedua pendidikan dan dalam produk perangkat lunak Anda sendiri .