카테고리 없음
[Algorithm] A* 알고리즘 구현(PHP)
nueog
2024. 4. 8. 15:41
반응형
1. PHP 에서 실행(서버에서 실행하기 위함)
0) a-star 오픈소스 다운로드
https://github.com/jmgq/php-a-star
1) composer install (php의 composer라는 라이브러리 설치)
2) composer require jmgq/a-star
- 깃허브 a-star 실행
3) composer update
4) composer example:terrain
- example.php 실행
- terrainCost 에서 배열로 가중치 설정
- start, goal 포인트 설정
코드
#!/usr/bin/env php
<?php
namespace JMGQ\AStar\Example\Terrain;
require __DIR__ . '/../../vendor/autoload.php';
use JMGQ\AStar\AStar;
//각각의 자리에 가중치를 둠
/*$terrainCost = new TerrainCost([
[3, 2, 3, 6, 1],
[1, 3, 4, 1, 1],
[3, 1, 1, 4, 1],
[1, 1, 5, 2, 1]
]);*/
$terrainCost = new TerrainCost([
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]
]);
$start = new Position(0, 0);
//$goal = new Position(0, 4);
$goal = new Position(2, 4);
$domainLogic = new DomainLogic($terrainCost);
$aStar = new AStar($domainLogic);
$solution = $aStar->run($start, $goal);
$printer = new SequencePrinter($terrainCost, $solution);
$printer->printSequence();
echo "\n";
실행결과
(1) 기존 가중치, start 0,0, goal 0,4
(2) 기존 가중치, start 0,0, goal 2,4
(3) 가중치 없는 배열, start 0,0, goal 2,4
끝-!
반응형