뒤집을 수있는 방법으로 digraph를 무 방향 그래프로 변환


10

가역적 인 방법으로 digraph (지향 그래프)를 방향이없는 그래프로 변환하는 알고리즘을 찾고 있습니다. 즉, 방향이없는 그래프가 주어지면 digraph를 재구성 할 수 있어야합니다. 나는 이것이 더 많은 정점을 가진 무 방향 그래프를 희생시킬 것이지만 나는 신경 쓰지 않는다는 것을 이해합니다.

이것을하는 방법을 알고 있거나 참조를 제안 할 수 있습니까? 미리 감사드립니다.


업데이트 : 아래 AdrianN의 답변에 관해서. 좋은 출발점이 될 수 있지만 현재의 형태로는 효과가 없다고 생각합니다. 내가 생각하지 않는 이유는 다음과 같습니다. 여기에 이미지 설명을 입력하십시오


DW의 의견 후 업데이트 : 그래프의 정점이 레이블이없는 것으로 간주합니다. 솔루션에 정점에 레이블을 지정하는 경우 (AdrianN과 마찬가지로) 레이블링 방법에 관계없이 동일한 (동형) 무 방향 그래프를 제공해야합니다. 레이블이있는 정점이있는 그래프에 대한 "동형"의 정의는 두 그래프와 관련된 레이블의 순열이 있지만 레이블이없는 그래프에 대한 정확한 정의는 확실하지 않습니다.


1
이 질문이 너무 광범위하다고 생각합니다. 당신의 제약은 무엇입니까?
— adrianN

나는 지금 어떤 제약을 생각할 수 없다. 나는 방향 그래프의 정보를 뒤집을 수없는 한 방향이없는 것으로 인코딩하는 방법이 있다고 생각합니다. 내가 생각하고있는 것은 가장 단순한 유형의 무 방향 그래프 인 것 같습니다. 따라서 정점이나 가장자리에 색상을 사용하지 않는 솔루션을 찾고 있습니다.
— Heterotic

질문에 "같은 그래프"가 무엇을 의미하는지 지정해야한다고 생각합니다. 꼭짓점에 레이블이 있거나 정점에 레이블이 없음을 의미합니까? 당신이 그 의미합니까 모두 동일, 또는 두 개의 그래프는 동형 것을? 후자를 의미하는 것 같습니다. 이것이 응용 프로그램의 요구 사항입니까? 레이블을 유지할 수 있으면 문제가 더 쉬워지고 AdrianN의 답변이 작동합니다 (가장자리 가 가장자리 와 같지 않기 때문에 ). (V,E)(3,4)(1′,2′)
— DW

2
제발 통합 문제로 업데이트를. 어느 시점에서나 SE 게시물은 기록에 대해 궁금하지 않고 위에서 아래로 읽을 수 있어야합니다. 그것은 별도로 보관됩니다.
— Raphael

답변:


6

각 지정 모서리 에 대해 새 꼭지점 하고 를 모서리 , , , , , .e=(x,y)v1e,…,v5eexv1ev1ev2ev1ev3ev3ev4ev4ev5ev3ey

디코딩하기 위해, 이웃이 차수 2를 갖는 모든 리프 (degree-1 vertex)는 어떤 에지에 대해 이어야한다.  ; 그 이웃은  그리고 다른 이웃  이며  .  은 3도이고 잎과 인접한 고유 한 이웃을 가지고 있습니다. 이웃은  이고 잎은  ( 에 두 개의 잎이있는 이웃이 있으면 임의로 선택) ). 다른 이웃 있다  와 다른 이웃 이고  . 지정된 가장자리를 복원v5ee=(x,y)v4ev4ev3ev3ev1ev2ev1ev2ev1exv3ey(x,y) 정점 .v1e,…,v5e


7

David Richerby의 답변 (허용됨)이 좋습니다.

나는 간단한 예제 digraph에 대한 그의 지시를 따르고 그것이 누군가를 돕기를 바랍니다.

digraph a <-> b, c-> a, b-> c

(David의 답변에 대한 의견으로 이것을 게시했지만 필요한 평판 점수는 없습니다.)


1
그래픽 표현은 원래 답변보다 크게 개선되었습니다. 댓글이 아닌 답변으로 게시 해 주셔서 감사합니다.
— OrangeSherbet

1
나는 수학 논문에서 공식적인 설명이나 공식을 볼 때 항상 압도 감을 느낍니다. 나는 단지 그 불안을 극복하고 각 문장을 천천히 쳐다 봐야합니다. 그런 다음 이해하기 위해 이와 같은 예제를 씁니다. 결국 나는 항상 그것이 얼마나 긴지에 대해 어리 석고, 그것을 이해하는 데 얼마나 많은 노력을 기울 였는지에 대해 겁이 난다. 내가 때때로 다른 행성에서 온 것 같습니다. 더 빨리 이해할 수있게되어 기쁩니다. 당신이 그것을 본 후에는 쉽습니다.
— William

2

유 방향 그래프를 변환하려면 D 무 방향 그래프로 G 하나는 다음을 수행합니다.

  1. 노드 수 D
  2. 무 방향 그래프 2 개 생성 G′, G″ 와 동일한 정점에서D
  3. 모든 에지 , 의 로 에지를 추가 경우 , 다른 행의 에지를 추가uvDG′u<vG″
  4. G는 와 의 분리 된 결합이다G′G″

분리 된 연합을 수행 할 때 가역적 인 결합을 유지하도록주의를 기울여야합니다.

예


이것은 좋은 시도이며 대답을 염두에두고 있었지만 그 역수가 고유하지 않기 때문에 작동하지 않습니다. 예를 들어, 그래프 O <-> OOO는 그래프 OO OO OO OO로 변환되지만이 후자는 또한 지시 된 그래프 O-> O O-> OOO에서 나올 수 있으므로 프로세스를 되돌릴 수 없습니다.
— Heterotic

사진을 더 선명하게하기 위해 추가했습니다.
— adrianN

-1

아이덴티티 기능은 어떻습니까? 즉, 모든 digraph는 동일한 크기의 파티션을 가진 방향이없는 이분 그래프로 볼 수 있으며 그 반대도 마찬가지입니다.


나는 그래프 와 함께 그래프 를 코딩한다고 가정합니다. . 경우는, 양방향 가장자리에 대처하고 수 없기 때문에 그 일을하지 않는 모든 가장자리 반전의 결과 다음 와 동형 인코딩을 가지고 있지만 자신 반드시 동형 수 없습니다. G=(V,E)(V×{0,1},{(⟨u,0⟩,⟨v,1⟩)∣(u,v)∈E})G′GGG′
— David Richerby

-1

이것에 대한 찔림은 다음과 같습니다.

방향이없는 그래프에서 방향 정보를 추가 정점으로 바꿉니다. 즉, 방향이 지정되지 않은 그래프의 추가 정점을 사용하여 방향 정보를 "인코딩"합니다. 예를 들어, 하나 이상의 모서리가있는 각 지정 꼭지점에 대해 1 + "들어오는"모서리 개수와 같은 여러 개의 지정되지 않은 꼭지점을 추가합니다. 가장자리가 0 인 정점은 변경되지 않습니다.

역방향을 수행하려면 가장자리가 0 이상인 각 정점에 대해 정점을 만듭니다. 가장자리가 정확히 하나 인 정점은 "방향 인코딩"정점입니다. 다른 다중 모서리 정점을 연결하는 각 모서리는 유 방향 그래프의 연결입니다. 이제 알고리즘을 설명 할 수없는 까다로운 부분이 있습니다 (하지만 존재한다고 생각합니다). 각 정점에 대해 들어오는 화살표의 수만 주어진 화살표의 방향을 추론해야합니다.

까다로운 부분은 지뢰 찾기와 같은 것이라고 생각합니다. :-) 폭탄 (들어오는 가장자리)에 각 사각형 (정점)에 인접한 폭탄의 수가 주어진 곳을 찾으십시오.


"지향 정점"이란 무엇입니까? 어쨌든, 이것은 독창적으로 디코딩 할 수 없습니다. 꼭짓점 에 다른 정도의 꼭짓점과 함께 여러 개의 정도 -1 꼭짓점이 연결되어 있다고 가정합니다 . 얼마나 많은 것들이 1 도의 정점에서 들어오는 가장자리를 나타내고 얼마나 많은 사람들이 정도를 코딩하고 있는지 알 수 있습니까? 어쨌든 지뢰 찾기는 NP-hard이며, 솔루션이 항상 독특하지는 않으며 사각형이 멋진 격자에 반드시 배열되어 있지 않아도 해결 될 수 있는지 확실하지 않습니다. xx
— David Richerby

"지향 된 정점"이란 지시 된 그래프의 정점을 의미합니다 (동일한 비 지향적 그래프와 반대). "도 인코딩"정점에만 단일 가장자리가 있으므로 "실제"가장자리와 "도 인코딩"가장자리를 구분할 수 있습니다. 그것이 제 설명에서 "1 +"의 이유였습니다. 지뢰 찾기의 "까다로운 부분"에 대해 말씀 드리겠습니다. 나는 그것이 지뢰 찾기와 정확히 동일하다는 것을 모르지만, 나는 아마도 길을 따라 양동이를 걷어 차 있다고 믿을 수 있습니다 :-)
— Aaron

또한 처음 읽을 때 솔루션을 이해하지 못했지만 지금 어떻게 작동하는지 알 수 있습니다. 영리한!
— Aaron

하자 들어오는 가장자리 정확히 나가는 에지가없는 원래의 그래프의 정점 수. 코딩 된 그래프에서 는 정점으로 표시되며 정확히 하나의 모서리가 나옵니다. 정도 1 정점의 종류와 정도를 코딩하는 정도 1 정점의 종류를 어떻게 구별합니까? xx
— David Richerby

지금은 "minesweeper-moot"라고 생각하지만 내 생각은 지시 가장자리 를 가져 와서 및 로 변환하는 것이 었습니다. . 따라서 는 1이 아닌 2 개의 모서리를 갖습니다. 모서리가 1 개인 정점은 차수 코딩입니다. 는 1도를 나타내는 2 개의 정도 코딩 정점을 가지고 있습니다.이 간단한 예에서, 우리는 2 개의 정점이 있다는 것을 알고 있기 때문에 디코딩이 쉽고, 각각 0과 1의 정도를 가지므로(x,y)(x0,x),(x,y),(y,y0)(y,y1)xy(x,y)
— Aaron
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.