문제

나는 현대 또는 기존의 상업/무료 소프트웨어 프로젝트에 사용되는 트리 구조의 몇 가지 예를 찾고 있습니다. Wikipedia의 예를 볼 수 있지만 더 구체적인 예와 사용 방법을 찾고 있습니다. 예를 들어 데이터베이스의 기본 키는 BST 구조에 저장된 (읽은 내용에서) BST의 변형입니다 (이에 대해 저를 수정하십시오).

내 질문은 BST (Binary Search Tree)에 국한되지 않았으며 Red-Black, AVL 등과 같은 변형이 포함될 수 있습니다.

도움이 되었습니까?

해결책

예제가 약간의 일반적인 IE가 그래프와 관련이 있고 반드시 나무와 관련이있는 경우 괜찮습니까? 그렇다면 읽으십시오.

  • 말할 것도없이 대부분의 XML/마크 업 파서는 나무를 사용합니다. 예를 들어 Apache Xerces를 참조하십시오. 또는 Xalan XSLT 파서. 감사 Mathewsdave26 나에게 상기시켜주기 위해!

  • PDF는 트리 기반 형식입니다. 그것은 있습니다 root 노드 뒤에 a catalog 노드 (이것들은 종종 동일합니다) pages 자녀가 여러 개있는 노드 page 노드. 생산자/소비자는 종종 균형 잡힌 트리 구현을 사용하여 문서를 메모리에 저장합니다.

  • 컴퓨터 체스 게임은 거대한 트리 (훈련)를 구축하여 휴리스틱을 사용하여 최적의 움직임에 도달하기 위해 런타임에 자랑합니다.

  • 플레어 AS로 작성된 시각화 라이브러리입니다. 데이터 객체가 어떻게 매핑되는지 확인할 수 있습니다. 특히 flare.analytics 패키지는 그래프 구조, 스패닝 트리 등을 많이 사용합니다.

  • 소셜 네트워킹은 CS 연구의 현재 유행어입니다. 연결/관계는 그래프를 사용하여 자연스럽게 모델링된다는 것은 말할 나위도 없습니다. 종종 나무는 더 흥미로운 현상을 나타내거나 식별하는 데 사용됩니다. "해리와 샐리가 일반적인 친구가 있습니까?"와 같은 질문에 어떻게 대답합니까?

  • 매우 성공적인 물리/게임 엔진은 인간 운동을 정확하게 시뮬레이션하기 위해 나무를 만들었습니다. 이 경우 나무는 일반적으로 일련의 행동에 해당합니다. 컨텍스트는 특정 응답을 렌더링하기 위해 어떤 경로가 취해 있는지 결정합니다.

  • 의사 결정 트리 기반 학습은 실제로 데이터 마이닝 연구의 강력한 영역을 형성합니다. 나무에서 작동하는 포장, 부스팅 및 수정과 같은 수많은 유명한 방법이 존재합니다. 이러한 작업은 종종 예측 모델을 생성하는 데 사용됩니다.

  • 생물 정보학의 일반적인 문제는 거대한 데이터베이스를 검색하여 주어진 쿼리 문자열의 일치를 찾는 것입니다. 시도는 일반적인 사건입니다.

  • 상당히 성공한 (주식) 거래자는 일상 거래에서 의사 결정 트리를 사용하여 거래를 선택하고, 종료하기 위해 거래를 선택합니다. 종종 이들은 컴퓨터 프로그램에서 체계화되지 않고 노트북 뒷면 어딘가에 기록됩니다.

잘 속는 사람. 보다 이것 그리고 이것.

다른 팁

데이터베이스 인덱스 B* 트리의 B는 이진이 아닌 균형을 이룹니다. 트리는 액세스 시간을 보장하기 위해 균일 한 깊이로 유지됩니다.

  • 파일 시스템은 트리 구조입니다. 따라서 무료 파일 시스템의 소스를 확인하십시오.

  • 컴파일러가 생성됩니다 ast 소스 코드에서 중간 단계로. 따라서 무료 컴파일러의 소스를 확인하십시오.

데이터베이스 인덱스는 일반적으로 이름에도 불구하고 이진 트리가 아닌 B* 나무의 변수로 저장됩니다.

이진 나무는 우주 패리닝 및 오래된 3D 게임에서 숨겨진 표면 제거에 사용되어 왔으며, 게임 운명에 사용되었다고 생각합니다.

  • 간단한 재귀 살해 파서를 쓰고 구문 분석 트리를 생성하도록하십시오.

  • 제조에 사용되는 재료 구조 (자동차와 같은 자동차는 재귀 적으로, 너트와 볼트까지).

  • 심볼 테이블 (컴파일러에 사용).

  • 프로젝트 관리에 사용되는 계정 차트. 전체 프로젝트에는 요금이 적용될 수있는 하위 프로젝트가 있습니다.

  • 회사 조직 구조 : 부서, 부서 등

  • 문서의 목차.

  • 사람의 후손, 사람의 조상.

  • LISP 프로그램을 포함한 모든 LISP S- 표현.

소프트웨어의 자동 완성 기능 (예 : 검색 엔진 "제안", IDE 유형/기호 완료, 이메일 및 주소록 이름 등)은 종종 트리 구조 인 시도로 구현됩니다.

Datawarehousing 제품을 살펴보면 나무 모양의 치수를 저장하고 드릴링하는 영리한 방법을 볼 수 있습니다. 위치 (국가, 지역, 주, M 카운티, 마을 등) 및 시간 (연도, 월, 일, 시간)에 대한 트리 구조를 얻습니다. 이 두 차원은 많은 도메인에서 일반적이지만 다른 실제 데이터도 트리에 적합합니다.

예를 들어 식품 소매업에서 나무의 뿌리에 식료품을 가질 수 있는데, 이는 유제품, 과일 및 채소 등으로 뚫을 수 있습니다. 콩의 통조림, 최상위 레벨에서 트럭로드로 말하면 팔레트, 상자, 주석 크기로 내려갑니다. 모든 다른 SKU (주식 유지 단위)는 매장이나 회사 내 사람에게 중요합니다. 그런 다음 다른 유형의 콩, 다른 공급 업체, 제조업체 - 동일한 차원에 대한 나무의 모든 예.

모든 다른 제품은 다양한 방법으로 슬라이싱하고 디킨 G를 갖는 거대한 나무를 형성합니다.

C ++에는 일반적으로 균형 잡힌 트리 인 레드 블랙 트리 (red-black tree)로 구현되는 여러 컬렉션 (Set, Multi_set, Map, Multi_map)이 포함되어 있습니다.

(C ++ 표준은이 구현을 명시 적으로 요구하지 않지만 복잡성 요구 사항을 충족하는 가장 간단한 설계입니다.)

내가 작업했던 라우터/스위치 장소에서 우리는 많은 트리 구조를 사용했습니다. 소프트웨어 경로 테이블을 위해 우리가 사용했습니다. 라디습니다 (IP 라우팅 테이블에 대한 일반적인 선택).

우리의 OSPF 구현은 사용했습니다 빨간색 나무, 우리의 BGP 구현은 사용했습니다 건너 뛰기.

기술적으로 Skiplist는 트리 구조가 아니지만 실제로는 매우 유사하며 정말 멋지다.

우리는 확실히 사용했습니다 그것에 대해 생각하고, 내가 그곳에서 일한 지 오래되었습니다.

DNS 쿼리 .. 맵을 사용하는 것은 AVL을 사용합니다

System.Collections.generic.SortedListu003CT> 이진 검색 트리를 기본 구현으로 사용합니다. 마찬가지입니다 System.collections.genericsortedDictionaryu003CT>. SortedList를 사용하는 모든 코드u003CT> 또는 SortedDictionaryu003CT> 이진 검색 트리를 사용하고 있습니다.

내 프로젝트에서는 설문 조사/인구 조사 데이터를위한 편집 및 대치 시스템에서 이진 의사 결정 트리를 사용하여 부과 할 수있는 레코드의 변수를 결정합니다. 이진 결정 트리를 사용하면 우리가 가져 와서는 안되는 나무의 경로에 대한 결정을 효율적으로 결정할 수 있습니다.

이 접근법 (이진 나무뿐만 아니라)은 인공 지능 응용 프로그램에도 사용된다고 생각합니다.

우리는 트리 구조를 사용하여 부품 분류 시스템을 모델링합니다. 부품은 부모 클래스 등이있는 '클래스'로 분류됩니다. 최상위 클래스는 카탈로그 UI의 탭 텍스트를 구동합니다. 클래스는 또한 가격 규칙을 적용하고 부품이 'configurator'에 표시되는 차량에서 '핫스팟'을 식별하는 데 사용됩니다. 우리는 Joe Celko의 중첩 세트를 사용하여 SQL로 트리를 모델링하고 더 나은 메모리에 메모리에로드합니다. 성능. 우리가 만드는 가장 일반적인 질문은 '누가 내 후손 인 사람'이고 '이 계급은 내 조상입니까?'입니다.

매우 편리합니다

일반적으로 물체의 분류 나무를 사용하여 종종 수행됩니다. 그리고 종종 그래프는 나무보다 훨씬 더 적합하지만 나무는 그래프보다 두 가지 큰 장점을 제공합니다.

  • (중첩) 목록으로 표시 될 수 있습니다. 예를 들어, 종이 (제목, 자막, 단락 및 중첩 목록 포함) 또는 그래프보다 컴퓨터 화면에 큰 트리를 표시하는 것이 훨씬 쉽습니다.
  • "http/stackoverflow.com/users/dimitri c"와 같이 간단한 경로 문자열 (또는 스택)을 사용하여 트리의 항목을 가리킬 수 있습니다.

ActionScript에는 구현 된 Treap이 있습니다. 출처 :

삼각은의 일부입니다 As3commons 컬렉션 프레임 워크. 수정 된 Treap은 포함 된 SortedSet 및 SortedMap 컬렉션을 뒷받침하는 데 사용됩니다.

자신을 나무의 뿌리로 삼아 이제 부모님을 나무의 자녀와 부모의 자녀로 삼아 나무의 자녀로 만드십시오.

따라서 가족의 완전한 계층 구조가 요구하는 곳을 구현하면 트리를 사용하여이를 구현할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top