가중치 그래프에서 간선 가중치로 0을 사용할 수 있습니까?


60

임의의 그래프를 생성하는 스크립트를 작성하려고하는데 가중치 그래프의 가장자리가 0 값을 가질 수 있는지 알아야합니다.

실제로 0은 간선의 가중치로 사용될 수 있지만, 지난 며칠 동안 그래프로 작업 해 왔으며 그 예를 본 적이 없습니다.

여기에 이미지 설명을 입력하십시오


28
음수 값이 "허용"된다면 왜 0이 아닌가? :)
Derek 朕 會 功夫

5
빠른 예로서, 한 노드에서 다른 노드로 이동할 때 양의 가중치가 순 연료 소비를 나타내면, 음의 가중치는 순 급유를 나타낼 수 있습니다. 제로 가중 에지는 연료 보급에 의해 연료가 정확히 보상되는 곳입니다.
JW

1
@DavidRicherby 나는 여기서 실제 질문은 "무게가 0 인 에지에서 알고리즘 X가 올바른지"라고 믿는다. 그렇지 않으면, 문맥은 무엇입니까? 세부 사항에 따라 예 또는 아니오가 될 수 있습니다. "배열에 0을 포함 할 수 있습니까"와 같은 질문도 마찬가지로 의미가 있습니다.
Juho

1
@ Juho : 아, 그것은 분명하다. 숫자가 음수가 될 수 있는지 묻는 것과 같습니다. 당신에게는 그것이 상황에 달려 있다는 것이 분명해 보이지만 음수가 나올 때까지 사람들에게는 분명하지 않았습니다. 제로조차도 분명하지 않았습니다.
Mehrdad

1
당신이하고 싶은 것에 따라, 당신의 무게는 실수가 아닐 수도 있습니다. 예를 들어, 그래프가 AC 회로를 나타내는 경우 가중치는 페이저 일 수 있으며 복소수입니다.
user2357112

답변:


165

누구에 의해 허용 ? 할 수있는 것과 할 수없는 것을 결정하는 중앙 그래프 관리는 없습니다. 정의가 무엇인지 분명한 한 편리한 방식으로 객체를 정의 할 수 있습니다. 가중치가 0 인 가장자리가 유용한 경우 사용하십시오. 당신이하고있는 일을 독자들에게 알리십시오.

일반적으로 가중치가 0 인 모서리가 표시되지 않는 이유는 대부분의 상황에서 가중치가 0 인 모서리가 모서리가없는 것과 정확히 동일하기 때문입니다. 예를 들어, 그래프가 국가와 국가 간 거래량을 나타내는 경우 가중치가 0 인 가장자리는 거래가 없음을 의미하며, 이는 가장자리가 전혀없는 것과 같습니다. 그래프가 거리를 나타내는 경우, 가중치가 0 인 가장자리는 서로 거리가 0 인 두 위치에 해당합니다. 즉, 실제로 동일한 위치임을 의미하므로 둘 다 동일한 꼭짓점으로 표시되어야합니다. 그러나 다른 상황에서는 가중치가 0 인 가장자리가 적합 할 수 있습니다. 예를 들어, 그래프가 도로 네트워크를 나타내고 모서리 가중치가 교통량을 나타내는 경우, 아무도 사용하지 않는 도로 (무중력 구간)와 도로가 전혀없는 구간 (가장자리 없음)간에 큰 차이가 있습니다.


1
많은 그래프 알고리즘이 음의 가중치를 갖는 그래프에서 작동하는지 여부를 명시 적으로 지정한다는 점은 주목할 가치가 있습니다. 나는 이것이 문맥에 따라 음의 가중치조차도 허용된다는 것을 분명히한다고 생각합니다.
Mooing Duck

6
@MooingDuck 질문의 요점은 알고리즘이 실제로 음의 가중치에 대해 작동하는지 여부를 말하지만 0의 가중치는 거의 언급되지 않는다고 생각합니다. 음수 가중치는 0보다 훨씬 덜 드문 경우이므로이 특정 상황에서는 가중치를 언급 할 필요가 없습니다.
David Richerby

13

상황에 따라 다릅니다. 일반적으로 예, 0의 가장자리와 심지어 음의 무게가 허용 될 수 있습니다. 특정 경우에 간선 가중치가 음수가 아니거나 엄격하게 양수 여야 할 수도 있습니다 (예를 들어, Dijkstra 알고리즘은 가중치가 음이 아니어야 함).


0을 금지하는 특정 유형의 그래프가 있습니까? 음수 또는 양수 값을 허용합니까?
Taxellool

9
"영이 아닌 모서리 가중치 그래프".
Tom van der Zanden

10
@Taxellool 수학 개체는 석재로 설정되지 않습니다. 사용할 수있는 유일한 고정 이름을 가진 고정 된 수학적 개체 목록은 없습니다.
David Richerby

사용하는 알고리즘에 따라 다릅니다. 다 익스트라 그들이이 생략되는 동안 벨만 - 포드는 0을 받아 들인다
마누엘 아자르에게

5

다른 답변에서 알 수 있듯이 가중치가 0 인 가중치 그래프는 가중치가없는 그래프를 완벽하게 고려 (또는 고려에서 제외) 할 수 있습니다.

내 경험에 따르면, 가중 그래프의 대부분의 응용에서 일반적인 규칙은 가중치가 0 인 가장자리와 가장자리가없는 것을 구별하지 않는 것입니다. 그 이유 중 하나는 일반적으로 가중 그래프가 다중 그래프의 일반화로 표시되며 , 이는 단순 그래프의 일반화입니다.

특히, 멀티 그래프는 ( 단순 그래프 와 달리 ) 동일한 쌍의 노드 사이에 여러 개의 가장자리를 허용하는 그래프 입니다. 간단한 그래프에서 임의의 노드 쌍은 항상 0 또는 1 개의 모서리로 연결되며, 다중 그래프의 한 쌍의 노드는 0, 1, 2, 3 이상으로 연결될 수 있습니다 (그러나 항상 음이 아닌 정수는 ) 가장자리.

한 쌍의 노드 사이에서 소수의 모서리 를 허용하도록 다중 그래프를 일반화하면 자연스럽게 가중치 그래프를 고려하게되며 임의의 다중 그래프에서 작동하는 많은 알고리즘을 이러한 가중치 그래프에서 작동하도록 만들 수도 있습니다. 그러나 이러한 알고리즘의 경우 모서리의 "가중치"는 실제로 다중도를 나타냅니다 . 따라서 이러한 해석이 주어지면 한 쌍의 노드간에 "가장자리 없음"과 "0 가장자리"사이에 의미있는 구별이있을 수 없습니다. 둘 다 정확히 같은 것을 의미합니다.

물론, 정의에 따른 "가중 그래프"는 실제로 각 모서리와 연관된 숫자가있는 그래프 일 뿐이며 가중치를 다중도 이외의 것으로 해석 할 수 있습니다. 가장자리는 실제로 의미가있을 수 있습니다. 그러나 이러한 "이상한 가중치 그래프"에 표준 멀티 그래프 알고리즘을 적용하려고 시도하는 것은 가장자리 가중치의 대체 (비다 중성) 해석 측면에서 의미가있는 결과를 생성 할 수 없습니다.


6
가중치 그래프가 "일반적으로"표시되는 방법은 필드에 따라 다릅니다. 가장 짧은 경로를 찾기 위해 도로 네트워크를 그래프로 모델링 할 때 가중치는 거리를 나타내며 교차점 사이의 여러 도로로 시작한 다음 분수 도로를 도입하지 않습니다.
adrianN

3
@adrianN 그래프가없는 것처럼 가장자리가 없으면 무한 관련 값에 해당하지만 0이 아닙니다.
코드 InChaos

0

영국 캠브리지의 도로 시스템 그래프를 생각해 보면, 자전거 운전자와 자동차 운전자가 노트를 공유하기 때문에 대부분의 이점이 있습니다. 이렇게하면 데이터 유지 관리 비용이 크게 줄어 듭니다.

이제 가장자리 무게를 초 단위의 이동 시간으로 정의하면 각 가장자리에는 두 개의 무게가 있습니다. 하나는 자전거를위한 다른 차량용 무게입니다. 자동차는 사이클 방식으로 허용되지 않으므로 일부 무게는 무한합니다.

이제 서로 매우 가까운 두 개의 도로 교차점을 고려하여 자동차 운전자를 막는 몇 개의 기둥 만 톱니 모양으로 만듭니다. (예를 들어, 자동차 드라이브는 좌회전 만 할 수 있지만 자전거 운전자는 어느 방향 으로든 갈 수있는 교차로입니다.) 그런 다음 자동차 운전자로부터 무한한 무게와 자전거 운전자에게는 0 무게의 가장자리를 얻습니다.

(최상의 경로를 만들기 전에 사이클을 라우팅하기 위해 더 간단한 그래프를 만들기 위해 그래프를 사전 처리 할 수 ​​있습니다.)


이것이 어떻게 문제를 해결하지 못합니다. 이 질문은 가중치가 0 인 모서리에 대해 묻습니다. (캠브리지에 익숙하지 않은 사람들에게는 전혀 의미가 없을 수도 있습니다) 귀하의 예에서, 각 모서리에는 이미 두 개의 가중치가 있습니다. 이제 가중 그래프를 원하는대로 정의 할 수있는 한 괜찮습니다. 그러나 질문 된 내용을 해결하지 못하는 것 같습니다. 또한, 당신이 묘사하는 모든 가장자리는 자전거 타는 사람에게는 최소한 매우 작은 무게를 갖는 것 같습니다. 짧은 거리를 이동하더라도 0이 아닌 시간이 필요합니다.
David Richerby

@DavidRicherby는 1 초 미만의 시간이 기록되지 않는다고 가정합니다.
Ian Ringrose

0

가중치를 사용하여 그래프의 두 가지 다른 측면을 시도하고 나타내는 것처럼 들립니다. 첫 번째는 그래프가 실제로 표현 가능한 가장자리를 가지고 있는지, 두 번째는 실제 무게입니다.

아시다시피, 가장자리가 존재하고 (그리거나 그려야 할 필요가 있음) 지표로 '0이 아닌'을 사용하면 동시에 상황을 발견하면 혼란스러운 상황에 빠지게됩니다 여기서 제로 가중치는 유효한 것으로 분류됩니다.

본질적으로 가장자리의 존재를 나타내는 다른 방법이 필요합니다 (실제로 필요하다고 가정하고 단순히 N ^ 2 가중치 배열을 만들 수는 없지만 루프에 대해 무엇을 해야할지 결정 해야하는 함정에 빠집니다. 뒷면 가장자리 ...)


이것이 실제로 질문에 대한 대답인지 확실하지 않습니다. 문제는 그래프의 가중치가 0인지 여부에 관한 것입니다. 답은 대부분 가중치가 0 인 그래프에 대해 데이터 구조를 구현하는 방법에 관한 것입니다.
David Richerby

@DavidRicherby, 닫기; 그것은 (내 대답) XYProplem 문제-질문이 왜 그리고 어떻게 왔는지에 관한 것이 었습니다. 왜 처음에 문제가되었는지에 대해 합리화 할 수 있다면 해결책이 '퍼지'가 아니라 정답이되는 방법을 보는 데 크게 도움이 될 수 있습니다.
Philip Oakley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.