카테고리 없음

[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

 

끝-!

 

반응형