임의의 그래프를 생성하는 스크립트를 작성하려고하는데 가중치 그래프의 가장자리가 0 값을 가질 수 있는지 알아야합니다.
실제로 0은 간선의 가중치로 사용될 수 있지만, 지난 며칠 동안 그래프로 작업 해 왔으며 그 예를 본 적이 없습니다.
임의의 그래프를 생성하는 스크립트를 작성하려고하는데 가중치 그래프의 가장자리가 0 값을 가질 수 있는지 알아야합니다.
실제로 0은 간선의 가중치로 사용될 수 있지만, 지난 며칠 동안 그래프로 작업 해 왔으며 그 예를 본 적이 없습니다.
답변:
누구에 의해 허용 ? 할 수있는 것과 할 수없는 것을 결정하는 중앙 그래프 관리는 없습니다. 정의가 무엇인지 분명한 한 편리한 방식으로 객체를 정의 할 수 있습니다. 가중치가 0 인 가장자리가 유용한 경우 사용하십시오. 당신이하고있는 일을 독자들에게 알리십시오.
일반적으로 가중치가 0 인 모서리가 표시되지 않는 이유는 대부분의 상황에서 가중치가 0 인 모서리가 모서리가없는 것과 정확히 동일하기 때문입니다. 예를 들어, 그래프가 국가와 국가 간 거래량을 나타내는 경우 가중치가 0 인 가장자리는 거래가 없음을 의미하며, 이는 가장자리가 전혀없는 것과 같습니다. 그래프가 거리를 나타내는 경우, 가중치가 0 인 가장자리는 서로 거리가 0 인 두 위치에 해당합니다. 즉, 실제로 동일한 위치임을 의미하므로 둘 다 동일한 꼭짓점으로 표시되어야합니다. 그러나 다른 상황에서는 가중치가 0 인 가장자리가 적합 할 수 있습니다. 예를 들어, 그래프가 도로 네트워크를 나타내고 모서리 가중치가 교통량을 나타내는 경우, 아무도 사용하지 않는 도로 (무중력 구간)와 도로가 전혀없는 구간 (가장자리 없음)간에 큰 차이가 있습니다.
상황에 따라 다릅니다. 일반적으로 예, 0의 가장자리와 심지어 음의 무게가 허용 될 수 있습니다. 특정 경우에 간선 가중치가 음수가 아니거나 엄격하게 양수 여야 할 수도 있습니다 (예를 들어, Dijkstra 알고리즘은 가중치가 음이 아니어야 함).
다른 답변에서 알 수 있듯이 가중치가 0 인 가중치 그래프는 가중치가없는 그래프를 완벽하게 고려 (또는 고려에서 제외) 할 수 있습니다.
내 경험에 따르면, 가중 그래프의 대부분의 응용에서 일반적인 규칙은 가중치가 0 인 가장자리와 가장자리가없는 것을 구별하지 않는 것입니다. 그 이유 중 하나는 일반적으로 가중 그래프가 다중 그래프의 일반화로 표시되며 , 이는 단순 그래프의 일반화입니다.
특히, 멀티 그래프는 ( 단순 그래프 와 달리 ) 동일한 쌍의 노드 사이에 여러 개의 가장자리를 허용하는 그래프 입니다. 간단한 그래프에서 임의의 노드 쌍은 항상 0 또는 1 개의 모서리로 연결되며, 다중 그래프의 한 쌍의 노드는 0, 1, 2, 3 이상으로 연결될 수 있습니다 (그러나 항상 음이 아닌 정수는 ) 가장자리.
한 쌍의 노드 사이에서 소수의 모서리 를 허용하도록 다중 그래프를 일반화하면 자연스럽게 가중치 그래프를 고려하게되며 임의의 다중 그래프에서 작동하는 많은 알고리즘을 이러한 가중치 그래프에서 작동하도록 만들 수도 있습니다. 그러나 이러한 알고리즘의 경우 모서리의 "가중치"는 실제로 다중도를 나타냅니다 . 따라서 이러한 해석이 주어지면 한 쌍의 노드간에 "가장자리 없음"과 "0 가장자리"사이에 의미있는 구별이있을 수 없습니다. 둘 다 정확히 같은 것을 의미합니다.
물론, 정의에 따른 "가중 그래프"는 실제로 각 모서리와 연관된 숫자가있는 그래프 일 뿐이며 가중치를 다중도 이외의 것으로 해석 할 수 있습니다. 가장자리는 실제로 의미가있을 수 있습니다. 그러나 이러한 "이상한 가중치 그래프"에 표준 멀티 그래프 알고리즘을 적용하려고 시도하는 것은 가장자리 가중치의 대체 (비다 중성) 해석 측면에서 의미가있는 결과를 생성 할 수 없습니다.
영국 캠브리지의 도로 시스템 그래프를 생각해 보면, 자전거 운전자와 자동차 운전자가 노트를 공유하기 때문에 대부분의 이점이 있습니다. 이렇게하면 데이터 유지 관리 비용이 크게 줄어 듭니다.
이제 가장자리 무게를 초 단위의 이동 시간으로 정의하면 각 가장자리에는 두 개의 무게가 있습니다. 하나는 자전거를위한 다른 차량용 무게입니다. 자동차는 사이클 방식으로 허용되지 않으므로 일부 무게는 무한합니다.
이제 서로 매우 가까운 두 개의 도로 교차점을 고려하여 자동차 운전자를 막는 몇 개의 기둥 만 톱니 모양으로 만듭니다. (예를 들어, 자동차 드라이브는 좌회전 만 할 수 있지만 자전거 운전자는 어느 방향 으로든 갈 수있는 교차로입니다.) 그런 다음 자동차 운전자로부터 무한한 무게와 자전거 운전자에게는 0 무게의 가장자리를 얻습니다.
(최상의 경로를 만들기 전에 사이클을 라우팅하기 위해 더 간단한 그래프를 만들기 위해 그래프를 사전 처리 할 수 있습니다.)
가중치를 사용하여 그래프의 두 가지 다른 측면을 시도하고 나타내는 것처럼 들립니다. 첫 번째는 그래프가 실제로 표현 가능한 가장자리를 가지고 있는지, 두 번째는 실제 무게입니다.
아시다시피, 가장자리가 존재하고 (그리거나 그려야 할 필요가 있음) 지표로 '0이 아닌'을 사용하면 동시에 상황을 발견하면 혼란스러운 상황에 빠지게됩니다 여기서 제로 가중치는 유효한 것으로 분류됩니다.
본질적으로 가장자리의 존재를 나타내는 다른 방법이 필요합니다 (실제로 필요하다고 가정하고 단순히 N ^ 2 가중치 배열을 만들 수는 없지만 루프에 대해 무엇을 해야할지 결정 해야하는 함정에 빠집니다. 뒷면 가장자리 ...)