user: 두 장군 문제의 공학적 접근법을 알려줘.

gpt: Two Generals의 문제를 다루기위한 실용적인 접근법은 통신 채널의 불확실성을 수용하고 이를 제거하려고 시도하지 않고 수용할 수 있는 수준으로 완화시키는 방식을 사용하는 것이다. 예를 들어, 첫 번째 장군은 100 명의 메신저를 보낼 수 있으며 모든 포착 확률이 낮을 것으로 예상한다. 이 방법을 사용하면 첫 번째 장군은 무엇이든지간에 공격할 것이며, 두 번째 장군은 메시지가 수신되면 공격할 것이다. 또는 첫 번째 장군이 메시지 스트림을 보낼 수 있고 두 번째 장군이 각자에게 수신 확인을 보낼 수 있다. 각각의 일반적인 느낌은 받은 모든 메시지에 보다 편안하다. 그러나 증거에서 알 수 있듯이 공격이 조율될지 확신할 수 없다. 다른 알고리즘 없이 공격하지 못하도록 막을 수있는 알고리즘은 없다. 또한, 첫 번째 장군은 각 메시지에 1, 2, 3 ... n의 메시지임을 나타내는 마킹을 보낼 수 있다. 이 방법을 사용하면 두 번째 장군이 채널의 안정성을 알 수 있고 적절한 수의 메시지를 다시 보내어 적어도 하나의 메시지 수신 가능성을 높일수 있다. 채널을 신뢰할 수 있게 만들수 있으면 하나의 메시지만으로도 충분하며 추가 메시지가 도움이 되지 않는다. 마지막은 잃어 버릴 확률이 가장 높다.

장군이 메신저가 보내지고 가로챌 때마다 장군이 생명을 희생해야 한다고 가정하면, 공격이 조정되는 최대 신뢰도를 달성하는 데 필요한 메신저의 수를 최소화 하도록 알고리즘을 설계할 수 있다. 장군은 수천명의 목숨을 희생하지 못하도록 함으로써 조정에 대한 매우 높은 자신감을 얻었으며 장군은 메신저가 부재한 것을 거래에 착수한 장군이 적어도 한 번 이상의 확인을 받았으며 공격하겠다고 약속했음을 동의할 수 있었다. 메신저가 위험 지대를 가로 지르는데 1분이 걸리면 확인을 받은 후 200분의 침묵이 생겨 메신저의 생명을 희생하지 않으면서도 매우 높은 자신감을 얻을 수 있다. 이 경우 메신저는 파티원이 공격시간을 받지 않은 경우에만 사용된다. 200분이 지나면 각 장군은 다음과 같이 추론 할 수 있다. "나는 200분 동안 200메신저가 위험 지대를 넘지 않았거나 다른 장군이 공격을 확인하고 저지른 것을 의미하며 추가로 200분 동안 메시지를 받지 못했다. 나도 그렇게 할 것이다 ".

A pragmatic approach to dealing with the Two Generals' Problem is to use schemes that accept the uncertainty of the communications channel and not attempt to eliminate it, but rather mitigate it to an acceptable degree. For example, the first general could send 100 messengers, anticipating that the probability of all being captured is low. With this approach the first general will attack no matter what, and the second general will attack if any message is received. Alternatively the first general could send a stream of messages and the second general could send acknowledgments to each, with each general feeling more comfortable with every message received. As seen in the proof, however, neither can be certain that the attack will be coordinated. There's no algorithm that they can use  which will be certain to prevent one from attacking without the other. Also, the first general can send a marking on each message saying it is message 1, 2, 3 ... of n. This method will allow the second general to know how reliable the channel is and send an appropriate number of messages back to ensure a high probability of at least one message being received. If the channel can be made to be reliable, then one message will suffice and additional messages do not help. The last is as likely to get lost as the first.

Assuming that the generals must sacrifice lives every time a messenger is sent and intercepted, an algorithm can be designed to minimize the number of messengers required to achieve the maximum amount of confidence the attack is coordinated. To save them from sacrificing hundreds of lives to achieve a very high confidence in coordination, the generals could agree to use the absence of messengers as an indication that the general who began the transaction has received at least one confirmation, and has promised to attack. Suppose it takes a messenger 1 minute to cross the danger zone, allowing 200 minutes of silence to occur after confirmations have been received will allow us to achieve extremely high confidence while not sacrificing messenger lives. In this case messengers are used only in the case where a party has not received the attack time. At the end of 200 minutes, each general can reason: "I have not received an additional message for 200 minutes; either 200 messengers failed to cross the danger zone, or it means the other general has confirmed and committed to the attack and has confidence I will too".