2013-07-03 2 views
3

데이터의 2D 배열을 검색하고 동일한 정렬의 데이터 주위에 경계선을 만드는 데 좋은 알고리즘은 무엇입니까? 데이터는 무작위이므로 숫자 값을 포함한다는 것 외에는 사용 가능한 데이터에 대한 사전 지식이 없습니다.2D 패턴 검색

그렇지 않으면 주제에 대한 좋은 기사가 있습니까? 여기에 편집

는 내가 달성하기 위해 노력하고있어의 예입니다 : 이것은 복잡한 문제

enter image description here

그리고 2의

+0

아마도 데이터를 볼록한 선체로 그려 볼 것입니까? 거기에 많은 알고리즘이 있습니다 (예 : Wikipedia 참조). – Yellow

+0

원하는대로 들리십시오 linq.groupby – Sayse

+0

작은 2D 배열 예제를 제공해 주시겠습니까? 그렇지 않으면, 맞는 수 많은 알고리즘이 있습니다. – Regenschein

답변

3
너비 우선 탐색은 다음과 같이 here.First 그래프 G를 구성 도울 수

:

그래프 을 G 에지 (u, v)가이며 경우에만 U 번째 셀의 값 = v 번째 셀의 값.

그런 다음 BFS를 실행하면 셀 값을 사용하여 방문한대로 편리하게 표시 할 수있는 멋진 그래프가 제공됩니다.

1

에 대해 동일한하는 I 생각은 점 집합의 오목한 선체를 찾는 것과 같습니다.

"동일 정렬"데이터 포인트 집합을 결정할 수 있도록 먼저 데이터 요소에 대한 등호 연산을 정의해야합니다.

그런 식으로 점 집합을 식별하면 그 점 집합에 대한 오목한 선체를 찾아야합니다.

(나는 당신이 오목한 선체를 원하지만 convex hull이 아니라고 가정하고 있음).

오목한 선체를 찾는 것은 간단한 작업입니다.

자세한 내용은 여기를 참조하십시오 : https://gis.stackexchange.com/questions/1200/concave-hull-definition-algorithms-and-practical-solutions

을 실제로 당신이 원하는 볼록 선체의 경우, C#에서 구현 여기를 참조 : 작은을 위해 잘 작동되는 (

http://miconvexhull.codeplex.com/

+0

이것은 실제로 아주 좋은 제안입니다. 원래 게시물을 편집 한 후 오목한 선체를 찾는 것이 실제로 필요한 것입니다. 그러나 그림에서 알 수 있듯이 입력이 실제로는 2D 배열 일 경우보다 단순하며 검색 알고리즘이 아닌 것입니다. – Yellow

+0

오목한 선체의 정의에서 다각형에 대한 몇 가지 유형의 제한을 정의해야합니다 (그렇지 않으면 0 점의 최소 면적은 각 점을 연결하는 선에 의해 달성됩니다). – Teepeemm

0

본래의 솔루션 데이터 집합)은 두 개의 인수를 사용하고 두 개의 인수가 같으면 true를 반환하고 인접한 모든 쌍 (가로 및 세로)을 단순히 비교하고 비교 결과가 false를 반환하면 테두리를 그립니다 비교 연산자를 정의하는 것입니다.

+0

불행히도 이것은 상당히 큰 데이터 세트를위한 것입니다. – Alex

+0

크기는 어느 정도입니까? 이 계산을 얼마나 자주 수행해야합니까? 수십억 데이터 포인트의 경우에도 매우 빠를 것입니다. 따라서 수십억 가지가 있고 실시간으로 처리해야하는 경우가 아니면 괜찮습니다. – PeterK