https://algospot.com/judge/problem/read/MEETINGROOM
위의 종만북 투샛 문제에서
답이 없을경우 IMPOSSIBLE 을 출력해야되는데
책에서는 이거를
X와 Y가 같은 SCC에 속한다면 !X 와 !Y 도 같은 SCC에 속하게 되는 것이지요.
그러므로 SCC 들 간에도 원래의 함의 그래프와 같은 1:1 대응관계가 존재하고
(주석: 물론 한변수를 표현하는 두 정점이 한 SCC 안에 들어잇는 경우에는 1:1관계가 성립하지 않을겁니다. 하지만 이경우에는 답이 존재하지 않음을 이미 알고 있으니 이런 경우는 미리 걸러내면 됩니다)
, 한 SCC가 참이라면 그의 반대 SCC는 항상 거짓이어야 함을 알수 있습니다.
라고 써있는데.
책에는 그냥 저렇게만 나오고 슥~ 지나감
암튼 위에서 말한 "한 변수를 표현하는 두 정점" 이란
1. [A회의] 열림 (이하 변수 A라고 부름)
2. [A회의] 안열림 (이하 변수 !A)
이거 자너? 근데 어떻게 "저 두개가 같은 scc 에 들어있는지만 체크하면 답의 존재여부 검사가 끝남" 가 성립하는거임?
물론 같은 SCC에 속해있으면 당연히 참거짓 값도 같을테니 "IMPOSSIBLE" 출력해야되긴 하는데
서로 다른 SCC에 묶여 있더라도 답이 존재 할수 없는 경우도 있지 않음?
예를들어 A와 !A가 다른 SCC 이지만,
두 SCC의 진리값이 둘다 참이 거나 (A와 !A가 참이 되므로 모순이 발생)
둘다 False 이거나 (A 와 !A 둘다 False)
일때 답이 존재하지 않잖아. 결국 중요한건 두 변수가 속해있는 SCC의 참거짓 값이 중요한거아님?
뭔가 이거랑 관련된 베이스가 깔려있어야 되나? 아니면 그냥 직관적으로 딱보고 알수있는거임? 나는 둘다 해당이 안되서 모르겠음;;
어떻게 딱보고 "한변수를 표현하는 두 정점이 한 SCC 안에 들어잇는 경우" 만 체크하면 된다는게 바로나오는지..
거기 증명 나와있을텐데? 모든 A와 neg A가 다른 SCC에 속하면 반드시 두 진리값을 다르게 만들 수 있음
아 그렇네.. SCC가 다르면 당연히 진리값도 다르겠네.. 아 근데 내가 뭔가 답답한 이유가 그냥 "답이 없는 경우는, 두 변수의 SCC가 같을때이다" 라는게 당연하다는듯이 그냥 슥 집고 넘어가는거 때문에..
scc가 같으면 답이 존재하지않는다는건 알겠는데. "애초에 scc가 같다=답 안존재" 가 어떻게 그냥 바로 나왔지? 이거 때문에 그냥 답답함;; 내가 뭔가를 놓치고 있는건가. 아몰랑 걍 답답하단말야 ㅠㅠ
아 모르겠다 이제 BFS 넘어가야겠다 지쳤다
일단 SCC가 같으면 답이 안 존재하는건 당연하잖아. A -> !A 는 모순이니
SCC가 다르면 항상 답을 다르게 만들 수 있는 방법이 있다는걸 보여줌.
이 두 방향을 모두 보여줬으니 당연히 증명 끝ㅇ침
not x -> x -> not x 모순이잔아 - dc App