宣教師と食人族問題(Missionaries and Cannibals)

AI/ML

概要

このリポジトリは古典的な人工知能の例題である「宣教師と食人族」問題のJavaによる実装を含みます。問題は制約付き探索の好例で、状態表現・遷移生成・合目的な探索(幅優先や深さ優先、もしくは評価関数付き探索)の学習に適しています。プロジェクトはVS Code向けに整えられており、srcフォルダにソース、binにコンパイル結果、libに依存が来る典型的な構成になっています。学習用途やアルゴリズムの動作確認に向いた小規模リポジトリです。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 2
  • ファイル数: 5
  • メインの言語: Java

主な特徴

  • Javaで宣教師と食人族問題の探索アルゴリズムを実装
  • VS Code用ワークスペース設定を含み、ビルド出力はbinに配置
  • 学習・教育目的に向いたシンプル構成とドキュメント
  • 小規模で理解しやすいコードベース(初学者向け)

技術的なポイント

本リポジトリは状態空間探索の典型的な実装を想定しています。状態は通常、左右の岸にいる宣教師と食人族の人数とボートの位置を表すタプルで符号化され、遷移はボートで1〜2人を移動させる操作として生成されます。重要な検証は「ある岸で宣教師の人数が食人族より少ない場合は無効」という制約で、これにより不正解状態を効率的に枝切りできます。探索戦略としては、最短解を求める幅優先探索(BFS)や、メモリを抑えたい場合の深さ優先探索(DFS)、評価関数を導入したA*などが典型的ですが、本リポジトリは教育用途のためシンプルな実装に重点が置かれている可能性があります。実装上の注目点は、状態の等価判定と訪問済み集合(Visited set)の管理、遷移生成時の妥当性チェック、及び解の復元(親ポインタを辿る)です。また、問題パラメータ(宣教師・食人族・ボート容量)を柔軟に変えられるようにすれば、一般化や性能評価、ヒューリスティック設計の実験が行えます。VS Codeの設定ファイルを含むため、ローカルで即ビルド・実行してアルゴリズムの挙動を確認しやすい点も利点です。(約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitattributes: file
  • .vscode: dir
  • README.md: file
  • bin: dir
  • src: dir

まとめ

教育目的に最適な、分かりやすい探索実装リポジトリです。(約50字)

リポジトリ情報:

READMEの抜粋:

Getting Started

Welcome to the VS Code Java world. Here is a guideline to help you get started to write Java code in Visual Studio Code.

Folder Structure

The workspace contains two folders by default, where:

  • src: the folder to maintain sources
  • lib: the folder to maintain dependencies

Meanwhile, the compiled output files will be generated in the bin folder by default.

If you want to customize the folder structure, open .vscode/settings.json and update the related setting…