나는 매우 자주 업데이트되는 부울 값을 가진 2D 행렬을 가지고 있습니다. 매트릭스에서 2D 인덱스 {x, y}를 선택하고 모든 요소를 거치지 않고 테이블에서 "true"인 가장 가까운 요소를 찾고 싶습니다 (매트릭스가 큽니다). 예를 들어2D 부울 행렬에서 가장 가까운 "참"원소를 찾으시겠습니까?
, 나는 행렬이있는 경우 :
0000100
0100000
0000100
0100001
을하고 난 {x1, y1}
같은 좌표 선택 {4, 3}, 나는 가장 가까운 "true"로 값의 위치를 반환하려는이에있는 대소 문자는 {5, 3}입니다. 요소 사이의 거리는 표준 피타고라스 방정식을 사용하여 측정됩니다.
distance = sqrt(distX * distX + distY * distY)
distX = x1 - x
및 distY = y1 - y
입니다.
매트릭스의 모든 요소를 살펴보고 "실제"값 목록을 유지하고 가장 짧은 거리 결과를 갖는 목록을 선택할 수 있지만 매우 비효율적입니다. 검색 시간을 줄이기 위해 어떤 알고리즘을 사용할 수 있습니까?
세부 정보 : 매트릭스 크기는 1920x1080이며 모든 프레임마다 약 25 개의 쿼리가 생성됩니다. 전체 매트릭스는 매 프레임마다 업데이트됩니다. 합리적인 프레임 속도를 유지하려고하는데, 7fps 이상이면 충분합니다. 행렬이 항상 업데이트되는 경우
많은 쿼리에 대해 행렬 상수입니까? – MBo
아니요, 항상 업데이트됩니다. –
@MathuSumMut 매트릭스의 최대 크기와 총 쿼리 수는 얼마입니까? –