Dijkstra의 알고리즘이이 신호 라우팅 문제에 대한 적절한 솔루션입니까?


12

통합 시청각 시스템을위한 신호 관리 및 라우팅 모듈을 개발하는 과정에 있으며 다른 신호 분배 네트워크에서 가능한 한 유연하게 설계하려고합니다. 모듈의 의도는 다수의 스택 매트릭스 스위처 ( 1)를 통한 라우팅을 처리하고 필요한 포맷 변환을 처리하는 것이다.

이 시점에서 살펴본 가장 좋은 솔루션은 스위처가 지원하는 각 신호 유형에 대한 불연속 정점이있는 그래프에 네트워크를 매핑 한 다음 형식 변환을 처리하는 비디오 프로세서를 나타내는 노드를 통해 연결하는 것입니다.

예제 그래프

색상은 신호 형식을 나타냅니다. 라운드 노드는 스위처, 소스 또는 싱크입니다. 사각형 노드는 형식 변환을 수행하는 비디오 프로세서입니다.

거기에서 Dijkstra의 알고리즘 구현을 사용하여 입력 X를 출력 Y로 가져 오기 위해 형성해야하는 경로를 식별 할 수 있습니다.이를 통해 모든 스위처 및 프로세서의 입력 / 출력 구성에 대한 데이터를 전달할 수 있습니다. 모듈은 그에 따라 적응합니다.

이것이 적절한 솔루션입니까 아니면 조사 할 가치가있는 대체 방법이 있습니까?

1 일명 '크로스바 스위치'M X N 입력 출력하는 지지체 일대 다 연결 갖는 비디오 라우터. 각각의 물리 장치는 다수의 신호 포맷을 처리 할 수 ​​있고 임의의 포맷 변환을 수행 할 수 있거나 불가능할 수있다.

편집 : Péter Török가 언급했듯이 그래프는 반드시 나무가 될 필요는 없으며 다이어그램은 아이디어를 설명하는 간단한 예입니다. '실제 세계'에서 구현 될 때 에지 가중치로 표현하려고 계획 한 다양한 수준의 정의 (DVI> VGA> 컴포넌트> 컴포지트)를 제공하는 다중 경로가 존재할 수 있습니다.

편집 2 : 지향성이 표시된 두 가지 신호 유형으로 구성된 네트워크를 보여주는 좀 더 포괄적 인 예입니다. 초기 예제는 장치의 각 입력 및 출력이 개별 노드로 정의되어 매트릭스 라우팅 / 입력 선택을 제어하는 ​​데 필요한 데이터를 제공하도록 약간 수정되었습니다. 예 2-두 가지 신호 유형, 스택 스위처


에지 가중치를 곱하려고합니까?
Peter Taylor

첨가물. 이론은 신호 경로의 정의가 높을수록 가중치가 낮아 지도록 정의 할 수 있습니다. 포맷 변환을 수행하는 노드를 연결하는 에지는 비 변환 노드를 연결하는 에지에 할당 된 것보다 가중치가 더 높습니다. 이것은 가능한 경우 신호를 기본 형식으로 라우팅하고 필요한 경우 형식 변환 (및 관련 신호 저하 및 장비 활용) 만 포함합니다.
Kim Burgess

1
@ 피터 테일러 : 그들이 곱하면 중요합니까? 대수를 적용하여 덧셈과 동일한 의미를 갖습니다 (양수 제공). 아니면 그 뒤에 더 복잡한 것이 있습니까?
herby December

@ 허비, 좋은 지적은 생각하지 못했습니다. 부끄러움에 걸려
피터 테일러

답변:


4

이것은 나무입니다. Dijkstra는 O ( n ^ 2 ) 과잉입니다. 사소한 O ( n ) 너비 우선 탐색만으로 충분합니다.

편집 : 적어도 2도 정도의 노드에서 BFS를 시작하십시오.

EDIT2 : 그래프는 트리가 보장되지 않으므로 Dijkstra를 사용하십시오. 약간의 최적화를 원한다면 먼저 그래프를 포함하여 1 도의 모든 정점을 "스트립"할 수 있습니다 (그러한 경우 경로는 사소합니다). 그것은 그들의 이웃을 벗겨서 1 급을 획득하고 나머지에서 Dijkstra를합니다 (정확히 "나무가 아닌"부분입니다).

또한 모든 노드에서 다른 노드로의 경로를 원한다고 말하지 않습니까? Dijsktra의 알고리즘은 하나에서 다른 것으로의 경로 만 수행합니다. 어쩌면 벗겨진 받침대에 Floyd-Warshall 알고리즘이있을 수 있습니다. 물론, 토폴로지가 매우 역동적이라면 (스트라이핑 및) Dijkstra를 임시로 수행하는 것이 가장 좋습니다.


2
위에 표시된 그래프는 단순화 된 예라고 생각하며 실제로는 두 노드 (형식) 사이에 여러 개의 대체 경로가있을 수 있습니다. 즉, 항상 트리 인 그래프를 신뢰할 수는 없습니다.
Péter Török

Dijkstra의 알고리즘은 적절하게 구현되지만 O ( n )도 더 복잡하지만 여전히 과도합니다.
피터 테일러

@ PeterTörök :이 경우에 그렇습니다. 오직 asker만이 알고 있습니다. 그러나 그것이 나무라면, bfs는 충분합니다 (그리고 죽은 간단한 것).
herby

@PeterTaylor : 흥미 롭습니다. 어떤 출처 라도요?
herby

@ PéterTörök이 맞습니다. 편집 된 질문을 참조하십시오.
Kim Burgess

2

문제의 그래프를 검색하기 위해 A * (보다 일반적인 Dijkstra 알고리즘 형식)를 사용할 수 있습니다. 당신은 당신의 의견에 가중치의 비용을 언급 :

첨가물. 이론은 신호 경로의 정의가 높을수록 가중치가 낮아 지도록 정의 할 수 있습니다. 포맷 변환을 수행하는 노드를 연결하는 에지는 비 변환 노드를 연결하는 에지에 할당 된 것보다 가중치가 더 높습니다. 필요한 경우 형식 변환 (및 관련 신호 저하 및 장비 활용) 만 포함하여 가능한 경우 기본 형식으로 신호를 라우팅합니다.

올바르게 이해하면 시작부터 목표까지 최저 비용 경로 경로를 찾고 싶습니다. 목표에 실제 비용과 추정치 (휴리스틱)를 모두 제공하면 (허용 가능하고 일관된) A *는 최적의 솔루션을 제공하도록 보장됩니다. 그래도 귀하의 문제를 얼마나 잘 이해하고 있는지에 따라 과잉이 될 수 있습니다.


+1 : 또한 IIRC, 휴리스틱은 최적의 경로를 보장하기 위해 항상 실제 비용보다 나쁜 비용을 추정해야합니다. 최악의 경우, 휴리스틱 권한을 얻을 수 없다면, 휴리스틱에서 0을 반환하면 dijkstra의 알고리즘이 있습니다.
Steven Evers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.