Điểm:4

Ẩn/Che khuất thông tin vị trí trong board game

lá cờ jp
fho

đã có một câu hỏi trên diễn đàn BoardGameGeek về cơ bản hiểu rõ điều này:

  1. Có một nhân vật người chơi trên bản đồ hình chữ nhật thông thường ở vị trí (px, py).
  2. Có một ký tự "AI" di chuyển trên bản đồ này theo một số chức năng hoặc mẫu (ví dụ: một trường mỗi lượt (t), (ax,ay) = (ax0,ay0) + t * (vx,vy)).
  3. Người chơi cần xác định xem hai nhân vật có ở trong khoảng cách (L1/Manhattan) D hay không.

Câu hỏi đặt ra ở đây là liệu có một kế hoạch nào đó cho phép người chơi tính toán khoảng cách đến AI mà trò chơi không cần phải tiết lộ vị trí thực tế cho người chơi hay không.

Đối với tôi, điều này nghe có vẻ như có thể tìm thấy một số giải pháp trong cộng đồng mật mã.

Hạn chế ở đây là, đây là một trò chơi cờ, không nên tham gia vào máy tính. Vì vậy, không muốn tính toán "phức tạp" hoặc chỉ lưu trữ các vị trí kỹ thuật số. Nhưng ngoài ra, mọi tiện ích đều là trò chơi công bằng (nghĩa là bảng tra cứu (lớn) hoặc sách mã).


chỉnh sửa: Tất nhiên, @ bmm6o đúng. Kế hoạch do @PaulUszak đề xuất không thực sự tính đến việc ai đó phải tính toán $H(p_x || p_y || a_x || a_y)$ và trong trường hợp trò chơi cờ (một mình) là người chơi.

Tôi rút ra một kế hoạch từ câu trả lời của Pauls và đăng rằng trên BGG. Lời phê bình là tôi đã mã hóa cứng các vị trí của AI làm giảm khả năng chơi lại. Một khi người chơi tìm ra $ai_{hash} \rightarrow (ai_x, ai_y)$ mối quan hệ, vị trí của AI không bị ẩn nữa.

Với suy nghĩ đó, câu hỏi đặt ra là liệu có một kế hoạch tiết lộ khoảng cách hiện tại [2] giữa người chơi và AI cho người chơi thực hiện phép tính trong khi tiết lộ càng ít thông tin càng tốt về vị trí hiện tại của AI hay không.


[2] Nếu điều đó tạo ra sự khác biệt thì người đăng ban đầu trên BGG chủ yếu quan tâm đến việc liệu AI và người chơi có ở cùng một vị trí hay không ($d=0$) hoặc nếu AI "đóng" (ví dụ: $d<3$). Khoảng cách xa hơn là không liên quan.

Paul Uszak avatar
lá cờ cn
Tính chính xác của tập hợp tọa độ bản đồ là gì? I E. có bao nhiêu vị trí có thể có trên bản đồ?
lá cờ jp
fho
@PaulUszak Điều đó không được chỉ định trong câu hỏi ban đầu, nhưng tôi đoán chúng ta có thể giả sử một bảng gồm khoảng 10x10 trường.
lá cờ jp
fho
@kelalaka Tôi không chắc mình hiểu câu hỏi của bạn, nhưng tôi nghĩ bạn cho rằng tôi đang nói về một trò chơi trên máy tính? Nếu đúng như vậy, sẽ dễ dàng để máy tính xử lý mọi thông tin và phép tính ẩn.Nhưng câu hỏi là về một kế hoạch che giấu và chỉ tiết lộ một phần thông tin trong trò chơi cờ bàn.
kelalaka avatar
lá cờ in
Ok, người dùng có thể thấy trình phát AI ở đâu không? Không phải Manhattan D rất dễ tính toán ngoại trừ các chướng ngại vật sao...
Mark avatar
lá cờ ng
Điều đáng nói là nếu một người đồng ý với một số thư giãn (xác suất và chỉ đảm bảo khi người chơi ở gần, nghĩa là $\lVert \vec v-\vec v'\rVert_1 dc$ với $c > 1$), thì người đó có thể làm * nhiều * tốt hơn câu trả lời hiện tại với hàm băm nhạy cảm với địa phương. Điều này không đảm bảo bằng mật mã, nhưng điều đó dường như không cần thiết. Ngoài ra, các lược đồ LSH hiện tại là (gần giống) tuyến tính, do đó, một lược đồ có thể chỉ cần lưu trữ $(h, h(ax_0, ay_0), h(v_x, v_y))$, một lượng dữ liệu (tương đối) nhỏ. Tuy nhiên, "khoảng cách" có nghĩa là điều này có thể không phù hợp với ứng dụng.
lá cờ jp
fho
@Mark "Khoảng cách" là gì?
Mark avatar
lá cờ ng
$c > 1$. Cụ thể, LSH có thể được đảm bảo hoạt động cho "đóng" ($cd$), nhưng không đảm bảo cho khoảng cách "trung bình" ($\in (d, cd)$).
lá cờ jp
fho
Câu hỏi tiếp theo tại đây: https://crypto.stackexchange.com/questions/98313/hiding-obscuring-position-information-in-a-board-game-part-2
Điểm:2
lá cờ cn

Bản năng tốt đến đây. Cảnh báo công bằng, tôi không biết trò chơi này là gì, nhưng. Hãy để người chơi sống tại $(p_x, p_y)$ và AI sống ở $(a_x, a_y)$. Và chúng tôi giả sử một lưới 10 x 10 ô.

Do đó, có 100 vị trí có thể có cho mỗi người chơi và do đó có 10.000 kết hợp có thể có của hai người chơi.Tôi cho rằng AI có thể đứng đầu trình phát, nếu không, bạn sẽ có 10.000 - 100 kết hợp khả thi nếu chúng không thể chia sẻ một ô.

Đối với tất cả các trò chơi, tính toán trước $H(p_x||p_y||a_x||a_y)$, và cả khoảng cách Manhattan $D$ ở giữa $(p_x, p_y)$$(a_x, a_y)$. $H$ là một hàm băm mật mã. Tôi đề xuất SHA-1 vì các giá trị thập lục phân 40 ký tự không quá dài để tìm kiếm thủ công. Loại $H$ theo thứ tự số để dễ dàng tìm kiếm hơn. Sau đó xuất bản $(H, Đ)$ cặp trong một cuốn sách dày. Với 50 giá trị băm trên mỗi trang, đó là ~ 200 trang.

Khi AI hoặc người chơi di chuyển, 'trò chơi' xuất ra $H$ mà có thể được tra cứu trong cuốn sách dày để có được $D$. Bạn không muốn lưu trữ kỹ thuật số, nếu không thì trò chơi chỉ có thể tính toán và xuất ra $D$ trực tiếp. Người chơi sẽ biết khoảng cách, nhưng không thể đảo ngược về mặt tính toán $H$ để có được vị trí của AI mà không bị ép buộc/gian lận. Kỹ thuật này cũng cho phép tính toán lại một phía của $(H, Đ)$ cặp nếu cần thiết để kiểm tra quá trình và ngăn chặn gian lận.

Điều này có thể thực hiện được đối với bảng 10 nhân 10, nhưng rõ ràng trở nên vô lý đối với bảng lớn hơn nhiều.


Lưu ý1: Hãy lưu ý mức độ chi tiết của bảng 10 x 10. Vì bạn biết vị trí của chính mình, bất kỳ $D$ tạo ra một vòng tròn các vị trí tiềm năng của AI xung quanh người chơi. Nếu phép tính khoảng cách dựa trên tâm ô, thì chỉ một số ô sẽ khớp chính xác $D$. Vì vậy, có một số rò rỉ thông tin vị trí. Điểm yếu này không phải là một tính năng dành riêng cho giải pháp của tôi, mà là toán học và lưới nhỏ.

Lưu ý2: Nhận xét đảo ngược. Có, bạn có thể tự tạo một cuốn sách mã gian lận và tìm tất cả $H$ tiền hình ảnh. Đó là gian lận mặc dù. Nếu có một trọng tài độc lập không thiên vị cho trò chơi, một chủ ngục tối (???), nếu bạn muốn, bạn có thể điều chỉnh hàm băm như $H = \text{SHA-1}(p_x||p_y||a_x||a_y||pepper)$ nơi hạt tiêu chỉ được biết đến với trọng tài. Điều đó vẫn sẽ tạo điều kiện thuận lợi cho việc kiểm toán trong quá trình tranh chấp.AI có thể giữ hạt tiêu nếu bạn tin tưởng nó sẽ chơi một trò chơi công bằng không?

Lưu ý3: Có thể cắt ngắn theo thống kê $|H|$ từ 40 ký tự thập lục phân đến ít hơn nhiều. 10.000 tổ hợp chỉ chiếm 14 bit. Nếu chúng tôi chọn mức bảo mật vị trí trò chơi là 10.000 khác, chúng tôi có thể sử dụng 28 bit cho các giá trị băm đã xuất bản. Điều đó sẽ xuất bản dưới dạng bảy ký tự thập lục phân; tám nếu bạn muốn cặp. Và do đó ít trang hơn.

Aman Grewal avatar
lá cờ gb
Câu hỏi cho biết khoảng cách Manhattan, vì vậy các tài liệu tham khảo về Pythagoras không được áp dụng. Và nếu điều này thực sự cần phải được tính toán bằng bút và giấy, tôi sẽ không đề xuất SHA-1.
Paul Uszak avatar
lá cờ cn
@AmanGrewal Manhattan: đã sắp xếp, cảm ơn. Các giá trị băm được tính toán trước vào một cuốn sách tra cứu.Tôi hiểu rằng sách mã/bảng tra cứu được cho phép.
lá cờ ph
Bước này diễn ra như thế nào: "'trò chơi' xuất ra H"?
lá cờ us
"không thể đảo ngược $H$ về mặt tính toán" -> sẽ chỉ mất vài phần nghìn giây để tự tính toán tất cả 10.000 giá trị băm để tạo chỉ mục đảo ngược. Không có đầu vào entropy cao nào cho $H$ trong đề xuất của bạn, vì vậy không có ý nghĩa gì khi nói về tính một chiều của $H$.
lá cờ jp
fho
Phản ứng tuyệt vời! Tôi không quá lo lắng về tính khả thi của việc đảo ngược $H$, nếu người chơi muốn phá trò chơi thì họ sẽ làm. Cái này có hiệu quả không bạn? Ví dụ: chỉ tính toán $a_x || a_y$ cho các trường đầu tiên sẽ tạo ra [[0,1],[1,1]] và nhìn vào đầu ra cho trường 10x10 có rất nhiều số lặp lại.
lá cờ jp
fho
Tiếp tục suy nghĩ đó: Tôi đoán điều đó có thể tránh được bằng cách xác định duy nhất từng trường riêng lẻ. Đó không phải là tính toán $H(a_x || a_y || p_x || p_y)$ mà là $H( (a_x + 10 * a_y) || (p_x + 10 * p_y))$ (đối với sân chơi 10x10).
lá cờ jp
fho
(Tôi nghĩ rằng chúng ta phải thực hiện cùng một "thủ thuật" hai lần, nếu không thì chúng ta có cùng một vấn đề đạt được ... vì vậy nó sẽ là $H((a_x + 10 * a_y) + (p_x + 10 * p_y) * 100) $. Câu hỏi bây giờ trở thành liệu có cần hàm băm nào nữa không (ngoại trừ việc có thể làm xáo trộn đầu ra).
lá cờ jp
fho
@PaulUszak Bạn có thể vui lòng nhận xét về $p_x || p_y$ giống nhau đối với một số kết hợp của $p_x$ và $p_y$ (ví dụ: $p_x = 1, p_y = 0$ và $p_y = 0, p_y = 1$)?
Morrolan avatar
lá cờ ng
@fho $||$ là thao tác nối.Như vậy $0 || 1 = 01$, còn $1 || 0 = 10$. Do đó, đầu vào của hàm băm không bằng nhau.
lá cờ jp
fho
@Morrolan Điều đó hợp lý hơn. Tôi không quen với ký hiệu đó và cho rằng nó phải là OR hoặc XOR.
Paul Uszak avatar
lá cờ cn
@fho Ôi Chúa ơi, xin lỗi. Đó là phép nối. Điều này hơi mơ hồ - xem https://crypto.stackexchange.com/a/71784/23115
lá cờ jp
fho
@PaulUszak Cảm ơn câu trả lời của bạn! Tôi sẽ chơi xung quanh này một chút. Tôi đoán sẽ khá dễ dàng để "xáo trộn trước" các vị trí trên bảng (chỉ để làm xáo trộn mọi thứ) và không sử dụng bất kỳ hàm băm (chuyên sâu tính toán) nào. Sau đó, chỉ cần $p_{fid} + a_{fid} * 100$ ($x_{fid}$ đại diện cho mã định danh trường) để có được một số ngẫu nhiên (phần nào) để tra cứu trong tập sách. Đó là, nếu bạn không nghĩ đến hàm băm thì việc tính toán nhiều lần bằng tay là chuyện nhỏ.
lá cờ ph
Tôi thực sự không hiểu làm thế nào điều này giải quyết vấn đề. Ai đang tính toán hàm băm này và tại sao họ không thực hiện phép tính khoảng cách trên các đầu vào thay thế?
lá cờ jp
fho
@bmm6o Mục tiêu là làm xáo trộn vị trí thực tế của AI trên bảng trò chơi. Vì vậy, không có con số/điểm đánh dấu trên bản đồ đại diện cho nó. Hàm băm sẽ phải được tính toán khi trò chơi được tạo ra để điền vào một cuốn sách mã với các bộ dữ liệu (băm(người chơi, ai), khoảng cách). Sau đó, người chơi sẽ kiểm tra xem anh ta có ở gần AI hay không. Việc sử dụng Manuel Blums HCMU có thể thực sự khả thi.
lá cờ ph
Tôi hiểu rằng cuốn sách sẽ được sản xuất trước thời hạn. Ai đang sản xuất hàm băm để tra cứu trong khi chơi?
lá cờ jp
fho
@ bmm6o Lý tưởng nhất là (những) người chơi. Bạn có thể rút gọn các phép tính thành một phép cộng và ứng dụng của hàm băm. HCMU thực sự khá đơn giản để tính toán, đặc biệt nếu đầu vào ngắn.
lá cờ ph
Nếu bạn nghĩ rằng điều này giải quyết được vấn đề của bạn, tôi sẽ không tranh luận với bạn. Nhưng câu trả lời này không làm rõ cách người chơi sẽ tính toán một hàm có đầu vào bao gồm vị trí của đối thủ mà họ không biết vị trí của đối thủ. Không phải quy trình mà ai đó phải tính toán $H(p_x||p_y||a_x||a_y)$ mỗi lượt sao?
lá cờ jp
fho
Hãy để chúng tôi [tiếp tục cuộc thảo luận này trong cuộc trò chuyện](https://chat.stackexchange.com/rooms/133414/discussion-between-fho-and-bmm6o).
lá cờ jp
fho
@PaulUszak Xin lỗi vì không chấp nhận câu trả lời của bạn. Tôi đã bị thuyết phục rằng tôi nên làm rõ câu hỏi của mình thay vì mở một câu hỏi mới.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.