Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- androidstudio
- node js
- 그룹채팅구현
- FCM
- 암호화
- android studio
- android pdf viewer
- ERD툴
- 채팅방구현
- PDFViewer
- Flutter
- socket.io
- Serial
- firebase
- 서버배포
- 개발일지
- EC2
- provider
- cloudmessage
- ERDTool
- socket통신
- 계층형 테이블
- BLUETOOTH
- MotionLayout
- 상태관리
- Android
- AWS
- erdcloud
- node.js
- DevExpress
Archives
- Today
- Total
nueog
[Algorithm] A* 알고리즘 구현(PHP) 본문
반응형
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
끝-!
반응형