이 게임에서 웜홀은 두 지역을 잇는 통로임. 편의상 시작점을 A지점이라 하고 웜홀의 반대편을 B지점이라 할게.
이 게임엔 여러 종류의 웜홀들이 있는데, 모든 웜홀들은 한번에 통과 가능한 질량 m과 웜홀이 붕괴되려면 필요한 질량 M이라는 수치가 있음. 통과 가능 질량 m과 붕괴에 필요한 질량 M은 웜홀의 종류마다 그 수치가 알려져있음. 근데 통과 가능 질량 m은 고정인 반면, 붕괴에 필요한 질량 M의 정확한 수치는 웜홀의 실제 instance마다 달라서 실제로는 알려진 수치와 +-10%의 오차가 있음. 이 오차는 후술할 방법으로 대략적으로 유추하는 것 외에는 알아낼 수 없음.
또 웜홀들은 잔여 질량 k가 0.1M ≤ k ≤ 0.5M을 만족할 때, 그리고 0 ≤ k ≤ 0.1M을 만족할 때 상태가 바뀌어서 이를 이용해 웜홀의 붕괴 필요 질량의 범위를 좁힐 수 있음.
그리고 붕괴 필요 질량 M은 전체 통과 가능 질량에 대한 상한이 아님. 즉 질량이 100 남은 웜홀을 질량이 300인 배로 통과하여 붕괴시키는게 가능하다는 얘기임.
이때 우리는 2~4대의 배를 이용해서 이 웜홀을 인위적으로 붕괴시키고싶음. 각 배들의 질량은 m-100로 동일하게 맞춰놓은 상태임. 단, 모든 배들은 질량을 m-100에서 m으로, m에서 m-100로 원할때마다 변경시킬 수 있음. 단 조건이 있는데, 모든 배들은 A지점에서 시작해 웜홀이 붕괴하기 전에 A 지점으로 모두 돌아와야 함.
예시) 웜홀 K346은 통과 가능 질량 m이 300이고, 붕괴 필요 질량 M은 2700 ~ 3300이다. 이때 질량이 200/300 중 가변적으로 선택 가능한 배들이 3대 있다.
만일 3대의 배가 A지점에서 B지점으로 모두 질량 300인채 통과하고, B지점에서 A지점으로 모두 질량 200인채 통과하였을때 상태가 바뀌지 않았다면, 우리는 웜홀의 실제 붕괴 질량이 3000 ≤ M ≤ 3300 임을 알 수 있다.
이때 내가 알고싶은건 두가지임.
1. 예시의 웜홀 K346을 예시의 조건에 따라 항상 안전하게 붕괴시키는 방법이 있는가?
2. 위 조건을 따라 웜홀을 붕괴시키는 것이 모든 m, M에 대해 가능한가? 가능하다면 웜홀을 붕괴시키는 방법을 찾는 일반적인 알고리즘이 존재하는가?
그냥 "대충 ~~한 방법을 쓰면 알아내는게 가능할 것 같다" 정도의 답이라도 괜찮으니까 도움좀 ㅠ
(수정) 사실 웜홀의 가짓수가 그렇게 다양하진 않아서 모든 M, m에 대해 일반화하는건 어렵기도 하고 쓸모가 없을거 같아서 질문을 더 좁혀볼게..
2* (M, m) = (3000, 300), (2000, 300)인 웜홀들을 붕괴시키는 안전한 방법이 있는가?
걍 우주여행 하지마라
앗..아아
이게 겜이냐
z3 theorem prover 써보세요 - dc App
선생님.. 너무 어렵습니다...
일단 2 * m - 200 > M인 경우는 불가능해요 - dc App
미친 무슨 게임이 이러냐
PS갤로
ㅠㅠ 하찮은 수린이는 이해 못하는 거시에효.. 좀만더 쉽게 써줄 수 없음? ㅠㅠ
어느 부분이 이해가 안댐?
질문1. 웜홀의 질량은 통과할때마다 누적되는거임? 질문2. '웜홀이 붕괴되기 전' 이라는 문장이 애매함 결국 마지막 배가 돌아올때 웜홀이 붕괴되어야만 이 조건을 만족할 수 있는건지?
1. 통과하는 배들의 질량이 누적되냐고 묻는거면 ㅇㅇ 2. ㅇㅇ 맞음. 마지막으로 돌아오는 배가 웜홀을 붕괴시켜야해
지나갈때마다 질량이 차감되고 남은게 잔여질량임?
ㅇㅇ 실제 M에서 통과한 배들의 누적 질량을 뺀거
만약 한번에 잔여질량 0.1보다 낮아진다면 잔여질량이 0.1M 보다 작아서 변했는지 0.1M과 0.5M사이에 있어서 바뀐건지는 알 수 없는거지?
ㅇㅇ. 근데 m과 M의 차이가 최소 5-6배 이상은 나서 0.5M을 건너뛰고 0.1M으로 넘어가는건 불가능하다 보면 돼.