반응형 개발/기본) 알고리즘19 알고리즘) 플러드 필 (Flood Fill) 플러드 필 (Flood Fill) 플러드 필이라는 알고리즘은 다차원 배열(2차원 이상)에서 화면을 격자(Grid)로 분할하거나 체우는과정에서 사용되는 알고리즘이다. 이번에 필자는 특정 맵을 포인트화하는 과정에서 해당 알고리즘을 사용했다. 타일맵으로 만드는 과정에서 굉장히 많이 사용한다. 구현방법은 다음과 같다. 특정 기준이되는 좌표를 정한다. 기준좌표의 방향(4방향 , 8방향)에 대한 확장형 로직을 작성한다. 해당 로직을 재귀처리한다. 재귀처리를 하는과정에서 해당 조건이 맞지 않으면 종료한다. (조건은 맵의 크기 or 갈수없는 영역 등등) 작업된 코드는 다음과 같다. private void GetGridPoint(int _x, int _z){ SceneInGame scene = SceneManager.I.. 2020. 1. 14. 알고리즘) Flocking Algorithm (군중이동 알고리즘) Flocking Algorithm (군중 이동 알고리즘) 군중 이동에 대한 알고리즘으로 많이 쓰이고 대중적인 알고리즘이다.새 떼라던지 물고기들의 움직임 등 여러 집단이 함께 움직이는 모습을 구현한 알고리즘이다. FSM!= Flocking Alogrithm (상태 머신이 없다)Emergent Behavior (임기응변적인 행동)개별적인 정보로 행동!= 집단의 움직임특징은 다음과 같다. 예전부터 한 번쯤은 구현해보려고 했던 Flocking Alogrithm을 구현을 했다.처음부터 내가 구성해서 작업한 건 아니고 다른 코드를 많이 참고했다. Flock에서는 각 가중치에 의거해서 회피, 집합, 정렬에 대한 처리를 하게 되고 집합 그룹이 되면 움직임에 대해서 평균 처리를 하게 된다.수학적인 로직이 꽤나 많이.. 2019. 12. 26. 알고리즘) 알고리즘 깊이우선 탐색 (Depth-First Search) 알고리즘 깊이우선 탐색 (Depth-First Search) 깊이 우선 탐색(DFS, Depth-First Search) 깊이 우선 탐색은 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법이다. 미로를 탐색할 때 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 이곳으로부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사하다. 즉, 넓게(wide) 탐색하기 전에 깊게(deep) 탐색하는 것이다. 사용하는 경우는 모든 노드를 방문하고자 하는 경우에 이 방법을 선택한다.(전체 검색) 깊이 우선 탐색(DFS)이 너비 우선 탐색(BFS)보다 좀 더 간단하다. 단순 검색 속도 자체는.. 2019. 10. 31. 알고리즘)알고리즘 너비 우선 탐색 (BFS : Breadth-First Search) 알고리즘 너비 우선 탐색 (BFS : Breadth-First Search) DFS와는 구현 방식이 조금 더 다른 형태의 탐색 알고리즘이다. 너비 우선 탐색은 탐색하는 곳의 동등한 뎁스를 우선 탐색 이후에 다시 하위에 대한 노드를 탐색하는 알고리즘이다. DFS와 다른점은 재귀적으로 동작하지 않고 반복 탐색을 한다. 너비 우선 탐색(BFS)의 특징 직관적이지 않은 면이 있다. BFS는 시작 노드에서 시작해서 거리에 따라 단계별로 탐색한다고 볼 수 있다. BFS는 재귀적으로 동작하지 않는다. 이 알고리즘을 구현할 때 가장 큰 차이점은, 그래프 탐색의 경우 어떤 노드를 방문했었는지 여부를 반드시 검사해야 한다는 것이다. 이를 검사하지 않을 경우 무한루프에 빠질 위험이 있다. BFS는 방문한 노드들을 차례로 저.. 2019. 10. 28. 이전 1 2 다음 반응형