2012-06-12 3 views
0

희소 행렬 (주로 0 인 행렬을 사용하므로 0이 아닌 값만 기록하는 행렬)을 구현해야하지만 이진 검색 트리를 사용하여 구현해야합니다.바이너리 검색 트리를 사용하여 희소 행렬 구현

편집 :

그래서 지금은 키와 행/열을 사용하여 구현 생각 해요,하지만 난 그 나무의 루트로 무엇을 사용 하는가를?/편집

나는 내가 또는 적어도 수에서,이 구현은 도움이 될 것입니다 방법을 이해하는 것입니다,하지만 난 내 인생을 알아낼 수 없습니다 이진 검색 트리를 연구 한 번 희망

.

저는 아무 소용이없는 구글을 시도해 보았습니다. 그리고 저는 그렇게하려고 시도하는 방법을 상상할 수 없습니다.

나는 아직 이것을 구현하지 않을 언어를 결정하지 않았으므로 코드 예제가 필요하지 않으며 문제는 논리입니다. 나는 이것이 어떻게 작동 하는지를 볼 필요가있다.

P. 나는 어떤 태그를 사용할 지 아무 생각이 없다. 누군가 편집 할 수 있다면, 대단히 감사 하리라.

+5

나는 당신이 원하는 용어가 "드문"이 아니라 "희소 한"것이라고 생각합니다. – JAB

+0

어떤 언어로이 작업을 수행 할 예정입니까? 그 태그가 가장 도움이 될 것입니다. –

+0

내가 아직 모르겠다 고 말했듯이, 나는 파이썬이 C++보다 빠를 것이라고 생각한다. 하지만 내가 말한 것처럼 100 % 확실하지 않다. – Kalec

답변

2

이진 트리를 사용하려면 매트릭스의 각 항목 (가능한 항목)마다 다른 키가 있어야합니다. 그래서 행렬 (2, 4)를 행렬 [100, 100]에서 조회하고자한다면, 키는 "002004"와 같을 수 있습니다. 이 키를 사용하여 트리에 값을 삽입 할 수 있습니다.

각 차원의 키가 길어질 수 있으므로 해시 함수를 사용하여 셀 좌표를 해시 할 수 있으며 트리에서이 해시 키에 대한 항목 목록이 있습니다. 트리는 올바른 목록의 인덱스 일뿐입니다. 목록에서 순차 검색을 수행해야합니다. 또는 목록을 주문하면 이진 검색을 사용하여 향상시킬 수 있습니다.

+0

그렇다면 value! = 0 인 행렬 물음표 (행, 열, 값)를 행렬로 나타내려면 행과 열을 단일 키로 저장하여 BST (이진 검색 트리)를 사용할 수 있습니까? 나는 나무의 뿌리로 무엇을 사용합니까? – Kalec

+0

@kalec : 예, 키는 줄과 열의 해시입니다. 값은 0 일 수 있습니다. 0과 빈 사이를 distingush해야합니다. 비어 있음은이 행, 열 튜플의 트리에 항목이 없음을 의미합니다. 루트는 첫 번째 노드 일 수도 있고 자체 균형 조정 트리의 경우 루트 노드가 더 많은 셀을 삽입하는 동안 변경됩니다. – schoetbi

관련 문제