Teknik pemrograman komputer mempunyai banyak paradigma atau teknik untuk menyelesaikan sebuah masalah, pemilihan teknik pemrograman yang tepat akan memberikan cara paling efektif untuk mendapatkan solusi dari masalah ini. Salah satunya adalah teknik procedural programming. Teknik ini akan memberi sekumpulan instruksi untuk komputer berupa langkah-langkah, dan perintahnya bersifat linear untuk menyelesaikan sebuah masalah dengan menggunakan loop dan percabangan.
Teknik lain yang digunakan dalam pemrograman komputer adalah logic programming yang bersifat deklaratif, teknik ini akan mengubah masalah menjadi sekumpulan fakta dan aturan. Dengan melakukan pendekatan secara logika, sebuah model penyelesaian akan menyelesaikan slither link mirip dengan logika manusia. Metode ini akan memberikan cara yang lebih efisien dalam menemukan solusi dari slither link, salah satunya adalah dengan menggunakan answer set programming.
Tujuan Penelitian
Tujuan dari penelitian ini adalah untuk membuat model penyelesaian game slither link menggunakan answer set programming dengan tool DLV (datalog with disjunction) dan procedural programming menggunakan C++ kemudian membandingkan kinerja dari kedua metode tersebut.
Ruang Lingkup Penelitian
Ruang lingkup permasalahan pada tugas ini adalah :
1 Membuat model penyelesaian game slither link. dengan menggunakan answer set programming dan procedural programming.
2 Ukuran pembanding adalah rata-rata waktu eksekusi dari setiap model solver.
3 Software yang digunakan adalah PHP sebagai front end dan DLV serta C++ sebagai back end.
Manfaat Penelitian
Penelitian ini diharapkan dapat menunjukkan bahwa answer set programming bisa menyelesaikan masalah game slither link NP-Complete sebagaimana procedural programming melakukannya.
TINJAUAN PUSTAKA
NP-CompleteSetiap masalah bisa diselesaikan dengan berbagai jenis algoritme, tapi algoritme yang disebut efisien adalah algoritme yang bisa menyelesaikan masalah dalam waktu polinomial untuk semua input. Algoritme yang disebut tidak efisien adalah algoritme yang menyelesaikan masalah dalam waktu eksponensial untuk beberapa input. Ada tiga kelas masalah yaitu P, NP, dan NPC.
Kelas P (polinomial) berisi masalah-masalah yang bisa dalam waktu polinomial, sebuah fungsi f(n) dikatakan P jika f(n) = O(nk) dengan k bernilai konstan dan n adalah ukuran dari input. Contoh masalah yang bisa diselesaikan dengan waktu polinomial adalah masalah sorting, dari semua algoritme sorting kompleksitas terbaiknya untuk kasus worst case adalah O(n2) dan O(n log n) untuk kasus best case (Cormen et al. 2001).
Kelas NP (non deterministic polynomial) berisi masalah-masalah yang bisa diverifikasi dalam waktu polinomial. Maksud dari kalimat tersebut adalah jika kita mempunyai kandidat solusi dari masalah NP, maka kita bisa melakukan verifikasi apakah solusi tersebut benar dalam waktu polinomial. Setiap masalah dalam P adalah NP, karena untuk setiap masalah dalam P bisa kita selesaikan dalam waktu polinomial tanpa memerlukan kandidat solusi. Contoh masalah yang masuk dalam kelas NP adalah TSP (travelling salesman problem) (Cormen et al. 2001).
1
PENDAHULUAN
Latar Belakang
Slither link adalah salah satu permainan kertas terkenal yang sulit untuk dipecahkan secara konvensional. Tujuan dari slither link adalah membentuk loop, yaitu sebuah putaran garis yang tidak bercabang dan kembali ke titik awal tetapi harus memenuhi aturan slither link yaitu jumlah garis yang mengelilingi cell harus sama dengan angka di dalam cell. Penyelesaian untuk persoalan ini harus melibatkan algoritme yang mencari kemungkinan semua solusi. Hal ini menyebabkan kompleksitas dari eksekusi algoritme ini akan menjadi eksponensial terhadap ukuran masukan yang diberikan. Permasalahan ini lebih dikenal sebagai Nondeterministic Polynomial-time Complete (NP-Complete).
Teknik pemrograman komputer mempunyai banyak paradigma atau teknik untuk menyelesaikan sebuah masalah, pemilihan teknik pemrograman yang tepat akan memberikan cara paling efektif untuk mendapatkan solusi dari masalah ini. Salah satunya adalah teknik procedural programming. Teknik ini akan memberi sekumpulan instruksi untuk komputer berupa langkah-langkah, dan perintahnya bersifat linear untuk menyelesaikan sebuah masalah dengan menggunakan loop dan percabangan.
Teknik lain yang digunakan dalam pemrograman komputer adalah logic programming yang bersifat deklaratif, teknik ini akan mengubah masalah menjadi sekumpulan fakta dan aturan. Dengan melakukan pendekatan secara logika, sebuah model penyelesaian akan menyelesaikan slither link mirip dengan logika manusia. Metode ini akan memberikan cara yang lebih efisien dalam menemukan solusi dari slither link, salah satunya adalah dengan menggunakan answer set programming.
Tujuan Penelitian
Tujuan dari penelitian ini adalah untuk membuat model penyelesaian game slither link menggunakan answer set programming dengan tool DLV (datalog with disjunction) dan procedural programming menggunakan C++ kemudian membandingkan kinerja dari kedua metode tersebut.
Ruang Lingkup Penelitian
Ruang lingkup permasalahan pada tugas ini adalah :
1 Membuat model penyelesaian game slither link. dengan menggunakan answer set programming dan procedural programming.
2 Ukuran pembanding adalah rata-rata waktu eksekusi dari setiap model solver.
3 Software yang digunakan adalah PHP sebagai front end dan DLV serta C++ sebagai back end.
Manfaat Penelitian
Penelitian ini diharapkan dapat menunjukkan bahwa answer set programming bisa menyelesaikan masalah game slither link NP-Complete sebagaimana procedural programming melakukannya.
TINJAUAN PUSTAKA
NP-CompleteSetiap masalah bisa diselesaikan dengan berbagai jenis algoritme, tapi algoritme yang disebut efisien adalah algoritme yang bisa menyelesaikan masalah dalam waktu polinomial untuk semua input. Algoritme yang disebut tidak efisien adalah algoritme yang menyelesaikan masalah dalam waktu eksponensial untuk beberapa input. Ada tiga kelas masalah yaitu P, NP, dan NPC.
Kelas P (polinomial) berisi masalah-masalah yang bisa dalam waktu polinomial, sebuah fungsi f(n) dikatakan P jika f(n) = O(nk) dengan k bernilai konstan dan n adalah ukuran dari input. Contoh masalah yang bisa diselesaikan dengan waktu polinomial adalah masalah sorting, dari semua algoritme sorting kompleksitas terbaiknya untuk kasus worst case adalah O(n2) dan O(n log n) untuk kasus best case (Cormen et al. 2001).
Kelas NP (non deterministic polynomial) berisi masalah-masalah yang bisa diverifikasi dalam waktu polinomial. Maksud dari kalimat tersebut adalah jika kita mempunyai kandidat solusi dari masalah NP, maka kita bisa melakukan verifikasi apakah solusi tersebut benar dalam waktu polinomial. Setiap masalah dalam P adalah NP, karena untuk setiap masalah dalam P bisa kita selesaikan dalam waktu polinomial tanpa memerlukan kandidat solusi. Contoh masalah yang masuk dalam kelas NP adalah TSP (travelling salesman problem) (Cormen et al. 2001).
2 Kelas NPC atau NP-Complete (non
deterministic polynomial complete) adalah persoalan NP yang paling sulit. Sebuah masalah X dikatakan NP-Complete jika :
1 X termasuk ke dalam kelas NP.
2 Setiap persoalan di dalam NP dapat ditransformasi dalam waktu polinomial menjadi X.
Jika sebuah masalah X hanya memenuhi kondisi nomor dua, maka masalah tersebut dikatakan NP-hard. Jika salah satu masalah NP-Complete bisa diselesaikan dengan waktu polinomial, maka semua masalah NP-Complete bisa diselesaikan dalam waktu polinomial. Beberapa masalah NP-Complete yang terkenal adalah Hamiltonian Cycle Problem dan Subset Sum. Masalah NP-Complete pertama yang berhasil dipecahkan adalah SATISFIABILITY (SAT) oleh Stephen Cook yang disebut teorema Cook (Garey et al 1979).
Semua persoalan P (polinomial) juga adalah NP (non deterministic poyinomial), P adalah himpunan bagian dari NP. Namun belum ada yang bisa membuktikan apakah masalah P≠NP atau P = NPsehingga P NPC =∅. Gambar 1 adalah ilustrasi hubungan antara P, NPC, dan NP.
Gambar 1 Hubungan antara P, NP, dan NPC (Cormen et al 2001).
Logic Programming
Logic (declarative) programming muncul sebagai paradigma berbeda pada tahun 1970-an, karena logic programming mengharuskan programmer untuk mendeklarasikan tujuan (goal) dari komputasi. Goal diekspresikan sebagai kumpulan dari aturan tentang hasil dan constraint (pembatas) dari komputasi. Logic programming disebut juga sebagai rule-based programming (Tucker et al 2002).
Secara umum, logic programming merepresentasikan masalah dalam bentuk aturan dan fakta. Sebuah aturan ditulis sebagai :
h ← p1, p2, ..., pn.
Sebagai contoh, misalnya kita mendapatkan fakta bahwa Allen dan Mary berbicara bahasa Rusia, Bob berbicara bahasa Inggris. Sedangkan aturannya adalah seseorang bisa berbicara dengan orang lain yang bernilai benar ketika mereka berbicara dalam bahasa yang sama. Maka kita bisa menulisnya sebagai fakta dan aturan berikut: speaks(allen,russian). speaks(bob,english). speaks(mary,russian). talkswith(P1, P2) :- speaks(P1,L), speaks(P2,L), P1\=P2.
Contoh eksekusi program : ?- speaks(alen,russian). true.
?- talkswith(X,allen). returns X = mary. Answer set programming
Answer set programming (ASP) adalah sebuah bentuk pemrograman berorientasi deklaratif untuk menyelesaikan masalah pencarian solusi yang sulit terutama masalah dengan kompleksitas tinggi (diatas ∑2�) Answer Set Programming adalah pengembangan dari Logic Programming dan telah diaplikasikan di banyak bidang ilmu pengetahuan.
Answer set semantics adalah salah satu formalisme yang paling populer dan semantik yang paling umum diterima dalam pemrograman logika, semantik ini mendefinisikan stable model yang memperbolehkan negasi dan disjungsi dalam aturan. Kelebihan ASP dibandingkan pemrograman berbasis Prolog adalah semantik yang jelas menjamin program bisa berhenti. Pemrograman berbasis Prolog tidak murni deklaratif karena semantik yang disediakan oleh Prolog masih bergantung pada aspek prosedural dari program, seperti urutan dari bagian body pada aturan.
Penyempurnaan lain yang ditawarkan ASP adalah semantik yang jelas untuk menangani program tidak stratified yang tidak bisa dilakukan oleh Prolog. Misalnya kita mempunyai pernyataan : “jika seseorang bisa diasumsikan bukan laki-laki maka orang tersebut pasti seorang wanita”, dalam ASP pernyataan tersebut ditulis sebagai berikut :
female(X) ← person(X), not male(X). male(X) ← person(X), not female(X).
Untuk setiap fakta dari person(a), answer set semantics menghitung satu himpunan jawaban (answer set) yang berisi female(a) dan satu
3 himpunan jawaban berisi male(a). Fitur
penting lain dari ASP adalah kemampuannya untuk menggunakan ekspresi disjungsi (“V”) pada head dari aturan. ASP menjadi sangat deklaratif untuk berbagai masalah. Sebagai contoh, program sebelumnya bisa ditulis menggunakan satu aturan seperti berikut :
female(X) V male(X) ← person(X).
Penggunaan disjungsi pada head akan meningkatkan kekuatan ekspresif dari ASP . Syntax ASP
Pada Answer Set Programming terdefinisi penggunaan tiga buah simbol yaitu, predikat (p), konstanta (k), dan variabel (ν). Predikat adalah simbol yang diawali dengan huruf kecil sedangkan variabel adalah simbol yang diawali dengan huruf besar. Sebuah simbol konstanta bisa bernilai numerik. Sebuah term bisa berupa konstanta atau variabel. Dalam sebuah simbol predikat p, sebuah atom didefinisikan sebagai
�1,…,�� dimana untuk setiap ��, 1≤ � ≤ � adalah sebuah term yang bisa berupa konstanta atau variabel, k disebut aritas dari p. Atom dengan aritas () disebut atom proporsional. Sebuah classical literal l bisa berupa sebuah atom p (positif), atau sebuah negasi atom ¬p (negatif).
Dua tipe negasi dalam ASP yaitu, default negation dengan bentuk “not b” yang berarti tidak ada bukti yang menunjukkan bahwa b berniali benar maupun b bernilai salah. Explicit negation dengan bentuk “¬b” yang berarti kita mempunyai bukti bahwa b bernilai salah.
Sebuah rule (r) dalam ASP mempunyai bentuk :
1 … � ← 1,…, , � +1,…, � Himpunan dari 1 … � adalah head dari aturan r, dinotasikan dengan
(�), sedangkan himpunan dari
1,…, , � +1,…, � adalah body dari r dan dinotasikan dengan � . Ada dua tipe body yaitu positive body literal yang dinotasikan sebagai + � dimana
+ � = 1,…, , dan negative body literal − � dimana − � = � +1,…, � sehingga � = + � − � .
Sebuah rule r tanpa head � = 0 disebut sebagai hard constraint, sebuah rule dengan tepat satu head �= 1 disebut sebagai normal rule, sedangkan sebuah rule dengan k > 1 disebut sebagai disjunctive rule. Jika body dari rule kosong �= = 0 maka rule tersebut disebut sebagai fact atau dengan kata lain kita
tidak menggunakan tanda “←”. Sebuah rule dikatakan positif jika n = m atau dengan kata lain dalam bahasa matematika ∀� ∈ � ∶
− � = ∅ , dan disebut juga sebagai horn rule.
Answer Set Semantics
Semantics dari program P adalah program yang bebas dari variabel, maka kita harus mendefinisikan ground instantiation dari program yang akan mensubstitusi semua variabel dari program dengan konstanta.
Herbrand Universe dari P (Program) atau kita sebut � , adalah himpunan semua simbol yang dibentuk dari konstanta dalam P.
Herbrand Literal Base berarti untuk setiap program P, adalah himpunan dari semua ground (classical) literal yang dibangun dari simbol predikat yang muncul pada P dan konstanta dari � .
Ground Instantiation berarti untuk setiap rule r, Ground(r) menotasikan himpunan rule yang didapatkan dengan mengganti setiap variabel yang muncul di r dengan simbol konstanta dalam � . Dinotasikan dengan Ground(P) yaitu himpunan dari semua ground instances dari rule pada P.
Semantics dari program P didefinisikan dengan mencari positive ground program. Sebuah interpretasi I adalah subset dari . Sebuah himpunan dari literals S memenuhi sebuah rule r jika dan hanya jika � � ≠ ∅ kapanpun + � ⊆ � dan − � �=∅. Himpunan dari literal S memenuhi sebuah program P jika memenuhi seluruh rule pada P. Sebuah model dari program P adalah sebuah interpretasi ⊆ dimana I harus memenuhi P. Sebuah answer set dari ground program yang positif adalah model minimal dari P.
Hasil reduksi atau Gelfond-Lifschitz transform (GL-transform) adalah program ground positive yang didapatkan dari Ground(P) dengan cara :
1 Menghapus semua rule r ∈ Ground(P) sehingga − � ≠ ∅.
2 Menghapus literal body negatif dari rule yang tersisa.
Sebuah answer set dari sebuah program P adalah sebuah interpretasi ⊆ sehingga I adalah answer set dari P. Program P dikatakan konsisten jika memiliki minimal satu buah answer set (ANS(P) ≠ ∅). Sebuah ground classical literal a dikatakan bravely true jika
4 ada minimal satu answer set A ∈ ANS(P),
dimana ∈ . Sedangkan sebuah ground classical literal a dikatakan cautiously true jika setiap answer set A ∈ ANS(P), dimana ∈ . Jika terjadi kasus spesial dimana program P definite-horn, dalam kasus ini P memiliki tepat satu answer set dan dinotasikan dengan Tp atau immediate consequence (Gelfond et al 1991).
Berdasarkan answer set semantics , maka terdefinisi reasoning task sebagai berikut : 1 Answer set existence, buktikan program P
memiliki paling sedikit satu buah answer set (selain itu maka program dikatakan tidak konsisten).
2 Brave reasoning, diberikan program P dan sebuah atom a maka buktikan apakah a benar pada minimal satu answer set P. 3 Cautious reasoning, diberikan program P
dan sebuah atom a maka buktikan apakah a benar dalam semua answer set P.
4 Generate all answer sets, diberikan program P maka hitung semua answer sets A ∈ ANS(P).
DLV (datalog with disjunction)
Untuk melakukan implementasi answer set programming para peneliti membuat ASP solver untuk mengevaluasi dan menampilkan answer set, beberapa ASP solver yang terkenal adalah DLV, clasp/claspD, SMODELS, dan ASSAT. ASP solver yang digunakan untuk menyelesaikan masalah slither link adalah DLV
(
datalog with disjunction). DLV dikembangkan
oleh University of Calabria dan Vienna Technical University. DLV adalah alat untuk mengkomputasi answer set yang mengimplemtasikan pemrograman logika disjungsi dengan menggunakan semantik answer set (Gelfond et al 1991).Disjunctive datalog memperbolehkan ekspresi logika OR (disjungsi) muncul didalam aturan. Kelebihan dari DLV adalah komputasinya sound and complete, sound adalah solusi yang dihasikan merupakan jawaban dari masalah dan complete adalah semua solusi harus muncul. Struktur dari DLV adalah : Rule : 1 … ∶ − 1,…, �, � �+1,…, � . Constraint : :− 1,…, �, � �+1,…, � . Program :
Sebuah himpunan terbatas P yang terdiri atas rules dan constraints.
Dengan mengikuti paradigma
Guess/Check/Optimize (GCO) masalah dengan kompleksitas tinggi bisa diselesaikan. GCO untuk program P akan terdiri atas tiga bagian berikut :
1 Bagian Guessing.
Bagian guessing akan mendefinisikan search space (ruang pencarian) yang merepresentasikan kandidat solusi. Pada bagian ini kita berusaha menebak semua solusi yang mungkin muncul.
2 Bagian Checking.
Bagian ini bersifat opsional yang akan memfilter kandidat solusi sedemikian rupa sehingga answer sets dari P akan merepresentasikan solusi yang bisa diterima untuk instance masalah. Pada bagian ini kita menuliskan constraint agar solusi yang muncul hanya solusi yang diinginkan. 3 Bagian optimization.
Bagian ini memungkinkan untuk mengekspresikan evaluasi bobot kuantitatif dari solusi dengan menggunakan weak constraint.
Misalnya kita akan memodelkan bahwa setiap kali seseorang memberitahu kita sebuah lelucon, maka kita tertawa. Hal ini bisa dilakukan dengan cara berikut :
joke.
laugh :- joke.
Baris pertama adalah fakta dan mengekspresikan bahwa joke adalah benar. Baris kedua adalah aturan, ini dibaca sebagai “ jika lelucon adalah benar, maka tertawa juga harus benar”. (tanda “:-“ berarti sebuah panah ke kiri, pemrograman logika mengartikannya sebagai implikasi).
Salah satu masalah NP-Complete yang terkenal adalah Graph 3-Colorability (Garey et al 1979). Diberikan (undirected) graf G
={V,E}, putuskan bagaimana memberi warna
pada setiap node dalam graf dengan salah satu dari tiga warna yang didefinisikan dimana tidak boleh ada dua node yang bertetangga mempunyai warna yang sama. Kasus graph coloring dengan tujuh node dan 3 warna ditunjukkan pada Gambar 2 :
5 Minnesota Iowa Illinois Michigan Wisconsin indiana Ohio
Gambar 2 Graf tujuh kota.
% aturan pewarnaan (guess)
col(Country, red) v col(Country,green) v col(Country, blue) :- node(Country). % periksa warna yg incident(check) :- arc(Country1, Country2), col(Country1, CommonColor), col(Country2, CommonColor).
DLV akan menghasilkan enam solusi, dan semua solusi memenuhi ketentuan graph coloring (graf tiga warna). Berikut adalah salah satu solusi yang dihasilkan :
{col(minnesota,green),
col(wisconsin,red), col(illinois,green), col(iowa,blue), col(indiana,red), col(michigan,blue), col(ohio,green) } Slither link
Slither link ditemukan tahun 1989 oleh perusahaan puzzle jepang Nikoli, slither link juga dikenal sebagai Fencesand Loop the Loop dan Dotty Dilemma. Slither link dimainkan dalam grid empat persegi panjang dengan beberapa nomor terisi didalam grid (tidak semua terisi). Masalah slither link telah terbukti NP-Complete (Yato 2003) sehingga bisa ditangani oleh answer set programming.
Tingkat kesulitan dari slither link didefinisikan berdasarkan luas persegi atau papan permainannya dan angka yang terisi di dalam grid. Aturan dari slither link adalah sebagai berikut :
1 Setiap masalah di representasikan dalam grid empat persegi panjang. Panjang dari persegi tersebut menunjukkan ukuran dari masalah.
2 Sebuah 1 x1 persegi dikelilingi oleh empat titik yang disebut cell. Sebuah cell bisa mempunyai nomor antara null, 0, 1, 2, atau 3.
3 Tujuan dari permainan adalah membuat loop yang tidak memotong atau bercabang dengan menghubungkan titik-titik yang bertetangga dengan garis, sehingga sebuah nomor dalam cell nilainya sama dengan jumlah garis yang mengelilingi cell tersebut.
Nomor didalam cellslither link yang belum terselesaikan dipilih sedemikian sehingga mempunyai solusi yang unik, Gambar 3 adalah contoh masalah slither link dan penyelesaiannya :
Gambar 3 Masalah slither link dan solusinya (Yato 2003).
METODOLOGI
Formulasi aturan pembangkitan slither link Aturan-aturan yang berlaku dalam pembangkitan slither link dikumpulkan. Aturan-aturan tersebut diformulasikan ke dalam bahasa logika answer set programming. Untuk pembangkitan slither link secara acak langkah-langkah yang harus dilakukan adalah (Wan 2009) :
1 Mengisi grid dengan sembarang loop. 2 Secara acak hapus nomor di dalam cell satu
per satu.
3 Periksa apakah slither link masih bisa menghasilkan solusi yang unik.
4 Hapus semua edge.
5 Tampilkan hasil pada pengguna.
Slither link yang dibangkitkan harus secara acak. Ketika menghapus nomor di dalam cell, algoritme pembangkitan harus memastikan bahwa slither link yang dihasilkan bisa diselesaikan menggunakan aturan logika. Proses ini dikerjakan oleh modul back end dan ditunjukkan pada Gambar 4.
6 Slither link yang ingin dibangkitkan adalah
slither link yang berada di tengah pada grafik perbandingan antara tingkat kesulitan puzzle dan jumlah constraint pada puzzle seperti ditunjukkan pada Gambar 5 berikut :
Gambar 5 Grafik tingkat kesulitan puzzle berbanding dengan constraint puzzle.
Gambar 5 bermakna bahwa slither link yang optimal adalah yang memiliki jumlah constraint yang tidak terlalu sedikit dan tidak terlalu banyak sehingga solusi yang dihasilkan unik dan sulit ditemukan, tetapi jika constraint sedikit maka solusi dari slither link kemungkinan banyak, dan sebaliknya jika constraint terlalu banyak maka kemungkinan slither link tidak mempunyai solusi. Untuk mendapatkan slither link dengan jumlah constraint yang tepat sangat sulit.
Formulasi aturan penyelesaian
Solusi yang dihasilkan akan dimodelkan sebagai graf yang mempunyai loop di dalam grid yang memenuhi aturan slither link. Maksud dari pernyataan tersebut adalah graf yang dihasilkan adalah solusi dari slither link dimana dalam setiap cell yang terdapat angka di dalamnya maka jumlah edge yang mengelilingi cell tersebut harus sesuai dengan angka di dalam cell tersebut. Dengan paradigma Guess and Check maka :
1 Guess
Akan ditebak semua kemungkinan graf (kandidat solusi) yang akan muncul dalam slither link, semua graf yang muncul adalah graf yang mempunyai loop atau cycle. 2 Check
Kandidat solusi yang dibangkitkan oleh prosedur guess diperiksa kembali dengan constraint yang ditentukan sehingga didapatkan solusi yang memenuhi aturan slither link.
Gambar 6Formulasi Penyelesaian. Cara termudah untuk menyelesaikan slither link adalah mengeliminasi garis dimana garis tersebut tidak seharusnya berada, cara ini dilakukan dengan memberikan nilai 0 untuk garis tersebut. Misalnya sebuah cell dengan nilai 0 tidak boleh mempunyai garis di sekelilingnya, maka semua garis yang mengelilingi cell tersebut harus dieliminasi. Petunjuk-petunjuk tersebut direpresentasikan dalam bentuk rule, dan berikut adalah petunjuk atau teknik untuk membantu menyelesaikan masalah slither link :
1 Tidak boleh ada garis di sekeliling cell dengan nilai 0. Perhatikan angka 0 pada contoh berikut, angka 0 berarti sebuah cell tidak boleh dikelilingi oleh garis maka berikan tanda X pada keempat sisinya untuk menandakan bahwa tidak boleh ada garis pada posisi tersebut.
Gambar 7 Cell dengan nilai 0 (Conceptis puzzle 1997).
2 Cell dengan nilai 0 dan 3 yang bertetangga. Contoh berikut menggambarkan cell dengan angka 3 yang berada di bawah cell dengan angka 0. Garis diatas cell yang bernilai 3 diberi tanda X maka hanya ada satu cara untuk menyelesaikan garis di sekeliling cell dengan nilai 3 yaitu pada kiri, bawah, dan kanan cell tersebut.
Ti ng ka t kes ul it an p u zz le Constraint puzzle
7 Gambar 8 Cell bernilai 0 dan 3 yang
bertetangga (Conceptis puzzle 1997).
3 Cell dengan nilai 0 dan 3 dengan posisi diagonal. Pada Gambar 9 bagian kiri diilustrasikan dua buah skenario jika terjadi diagonal antara 0 dan 3 dengan garis keabuan, berdasarkan fakta tersebut maka gambar di sebelah kanan pada Gambar 9 menggambarkan petunjuk ketika terjadi skenario ini.
Gambar 9 Cell bernilai 0 dan 3 diagonal (Conceptis puzzle 1997).
4 Cell dengan nilai 3 yang bertetangga. Hanya