1

빌드 스크립트에서 우리는 애플리케이션을 구성 요소로 분리했습니다.구성 요소 간의 종속성을 찾는 데 사용할 알고리즘은 무엇입니까?

시나리오는 다음과 같습니다.

모든 구성 요소는 하나 이상의 구성 요소에 의존 할 수 있습니다.

예 : 우리는 Component1에서 Component12까지 가지고 있습니다.

구성 요소 1은 구성 요소 2와 구성 요소 3에 종속됩니다.

구성 요소 4

난 다음이 순서 컴포넌트 2, component3, 컴포넌트 1, component6 및 component4 구축해야 종속성 컴포넌트 1과 component4을 구축하는 스크립트에서 지정하는 경우 컴포넌트 2와 component6에 따라 다릅니다.

종속성을 더 잘 찾고 어떤 구성 요소도 두 번 실행하지 않아도되는지 확인하는 데 유용한 알고리즘입니다.

답변

3

종속성 그래프를 조정 한 다음 topological sorting을 사용하여 컴파일 순서를 결정할 수 있습니다.

+2

이것은 질문 된 사항을 수행합니다. 순환 종속성으로 끝나면 http://en.wikipedia.org/wiki/Strongly_connected_component에서 링크 된 알고리즘 중 하나가 순환 종속성이 무엇인지 설명하는 약간 더 나은 작업을 수행합니다. 이는 강력하게 연결된 구성 요소가 될 것입니다. – mcdowella

1

너비 우선 탐색을 사용하여 그래프를 탐색하고 모든 새 노드를 목록에 추가하십시오. 현재 노드가 이미 목록에 있으면 해당 분기를 중단합니다. 마지막에는 목록에서 역순으로 구성 요소를 작성하십시오.

편집 : 적절하게 카페인 처리되지 않았습니다. soulcheck이 제안한대로 토폴로지 정렬을 사용합니다. 내 솔루션이 작동하지 않을 수도 있습니다.

관련 문제