Code Monkey home page Code Monkey logo

nonogram-solver's Introduction

Line-solving Optimation - Nonogram Solver

Source code ini merupakan bentuk implementasi Optimasi Metode Line-solving dengan Teknik Heuristik Pencarian Pseudo-Exhaustive untuk Menyelesaikan Permainan Nonogram

Daftar Isi

Abstrak

Permainan Nonogram adalah sebuah permainan berbasis logika yang mengasah pikiran. Belum cukup banyak algoritma yang diusulkan untuk dapat menyelesaikan permainan ini secara komputasional. Penyelesaian sebuah nonogram dengan cara lempang menggunakan algoritma brute force memerlukan kompleksitas waktu yang sangat tinggi sehingga algoritma ini tidak efisien. Permainan ini sendiri sudah digolongkan dalam permasalahan NP-complete sehingga akan sulit untuk merumuskan sebuah algoritma yang berhasil menyelesaikan permasalahan ini dalam kompleksitas polinomial.

Teknik Heuristik sering digunakan untuk melakukan akselerasi pencarian solusi tanpa harus memperoleh seluruh kemungkinan secara mendalam. Pada makalah ini akan dibahas sebuah algoritma berbasis line-solving yang penulis usulkan untuk menyelesaikan permasalahan ini dalam basis kasus-per-kasus. Algoritma diimplementasikan secara rangkap sebagai gabungan dari beberapa algoritma dengan pendekatan heuristik untuk melakukan optimasi mendekati kompleksitas polinomial. Pada makalah ini juga akan dibahas mengenai ide pengembangan lebih lanjut solusi dengan menggunakan proses propagasi dan program dinamis yang jika diimplementasikan dengan baik dapat mencapai kompleksitas rata-rata mendekati polinomial.

Implementasi Program

Program merupakan bentuk implementasi dari algoritma pencarian psudo-exhaustive yang diusulkan. Program yang dibangun telah berhasil dibuat untuk melaksanakan implementasi penyelesaian permainan nonogram dengan berbagai uji kasus nonogram dengan berbagai ukuran. Lebih lanjut, proses implementasi solusi dan skema pengujian telah berhasil membuktikan bahwa algoritma rangkap yang diusulkan pada proses pembangunan algoritma terbukti cukup sangkil karena meskipun berada pada kompleksitas sekitar eksponensial (polinomial derajat tinggi), tetapi memiliki ketinggian yang cukup landai.

Sistematika File

.
├─── doc
├─── src
│   └─── NonogramSolver.py
├─── src
│   ├─── input5x5.txt
│   ├─── input10x10.txt
│   ├─── input15x15.txt
│   ├─── input20x15.txt
│   ├─── input20x25.txt
│   └─── input25x25.txt
└─── README.md

Cara Menjalankan Program

  1. Lakukan clone repository dengan command berikut
    $ git clone https://github.com/mikeleo03/Nonogram-Solver.git
  2. Anda dapat melakukan pemrosesan terhadap nonogram dalam berbagai jenis ukuran yang terdapat pada direktori test, mulai dari nonogram persegi kecil berukuran 5x5 hingga nonogram besar non-persegi berukuran 20x25. Selain itu anda juga dapat memberikan masukan nonogram anda sendiri dengan mengikuti format masukan seperti yang terdapat pada direktori yang sama (n baris pertama menyatakan larik elemen penyusun kolom sejumlah n baris, diikuti m baris terakhir yang menyatakan larik elemen penyusun baris sejumlah m). Referensi gambar dapat Anda lihat pada folder test.

Penjelasan lebih jauh terkait cara kerja algoritma dapat dibaca pada tautan makalah berikut.

nonogram-solver's People

Contributors

mikeleo03 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.