Phát triển trí tuệ nhân tạo trong các chương trình cờ vua. Trí tuệ nhân tạo Đánh bại một người trong các trò chơi (Go, Cờ vua và những người khác) Đào tạo cờ vua cờ vua và trí tuệ nhân tạo




Một năm trước, chương trình Alphago giật gân đánh bại người chơi mạnh nhất thế giới, và bây giờ là trí tuệ nhân tạo Alphazero đã đánh bại động cơ cờ mạnh nhất.

Stockfish, được sử dụng để chuẩn bị tại nhà Hầu hết người chơi, người chiến thắng Giải vô địch TCEC 2016 và chức vô địch cờ vua trong số các chương trình máy tính 2017, hóa ra rõ ràng yếu hơn. Trong trận đấu từ 100 bên Alphazero giành được 28 chiến thắng ở 72 trận hòa và không bao giờ bị mất.

Nhân tiện, Alphazero chỉ dành bốn giờ để "học" cờ vua. Xin lỗi, mọi người, nhưng bạn không tức giận.

Được rồi - Các lập trình viên Alphazero được phát triển bởi DeepMind, Google, đã tạo ra nó dựa trên cơ chế của "Máy học máy", chính xác hơn là "học với củng cố". Nói một cách đơn giản, Alphazero đã không học cờ theo ý nghĩa truyền thống. Anh ta không có cuốn sách đầu tay, cũng không phải là bảng endgame, không có thuật toán phức tạp để đánh giá sức mạnh của những con tốt trung tâm và cánh quạt.

Công việc của nó có thể được so sánh với robot có thể sử dụng hàng ngàn phụ tùng, nhưng không biết nguyên tắc hoạt động của động cơ đốt trong, - nó trải qua sự kết hợp có thể xảy ra, cho đến khi nó xây dựng Ferrari, và đối với điều này anh ta cần ít thời gian hơn bộ ba của chúa tể của những chiếc nhẫn. Trong bốn giờ, chương trình đã chơi rất nhiều bữa tiệc với bạn, trở thành giáo viên của riêng bạn.

Cho đến nay, nhóm lập trình viên giữ im lặng. Họ không đưa ra ý kiến \u200b\u200bcờ vua, đề cập đến thực tế là báo cáo trong khi đang xem xét, nhưng ở đây bạn có thể đọc toàn bộ văn bản của mình. Nhóm nghiên cứu bao gồm Demis Hassabis, một ứng cử viên chính từ Anh và người đồng sáng lập của DeepMind (đã mua Google năm 2014). Hassabis, người đã tham gia các giải đấu Tandem Tandems tại buổi khai trương London Chess Classic, hiện đang ở Hội nghị hệ thống xử lý thông tin thần kinh (hệ thống xử lý thông tin thần kinh) ở California, với tư cách là cộng tác viên của báo cáo về một chủ đề khác.

Nhưng với Chess.com háo hức đã chia sẻ những đánh giá của mình về một cầu thủ cờ vua có một trải nghiệm cá nhân tuyệt vời về trò chơi với máy tính cờ vua. MG Harry Kasparov không ngạc nhiên khi Deepmind đã chuyển từ đi đến Cờ vua.

"Đây là một thành tựu đáng chú ý, mặc dù nó được dự kiến \u200b\u200bsau Alphago," ông nói Chess.com. "Nó tiếp cận" loại-b ", một cách tiếp cận giống như con người đối với cờ vua, kênh nào Shannon và Alan Turing mơ ước thay thế một bức tượng bán thân rắn."

Giống như một người, Alphazero coi ít vị trí hơn so với người tiền nhiệm của nó. Báo cáo tuyên bố rằng nó ước tính "tổng số" 80 nghìn vị trí mỗi giây so với 70 triệu mỗi giây từ Cờ cá.

MG Peter-Heine Nielsen, một giây dài của vô địch thế giới MG Magnus Karlsen, đã mở ra niềm đam mê của mình, đưa anh ta đến gần hơn với chủ tịch của Fide: Aliens. Ông nói Chess.com: "Sau khi đọc báo cáo và đặc biệt, sau khi xem xét bữa tiệc, tôi nghĩ:" Tôi luôn tò mò rằng nó sẽ là nếu một cái nhìn hợp lý hơn được trồng trên hành tinh của chúng ta và cho chúng ta thấy nghệ thuật của bạn về một trò chơi cờ vua. Có vẻ như, bây giờ tôi biết nó là gì. "

Chúng tôi cũng đã học về tầm quan trọng của những lợi thế của thân cây, ít nhất là cho trí tuệ nhân tạo. 25 trên 28 Chargetories Alphazero Won White (mặc dù kết quả + 3 \u003d 47-0 Đen chống cá chứng khoán, có xếp hạng vượt quá 3400, cũng không tệ).

Báo cáo cho thấy và tần suất động cơ đã chọn những lần ra mắt nhất định khi họ dạy. Xin lỗi, những người yêu thích bảo vệ cũ của Ấn Độ, nhưng bạn không ủng hộ. Sự quan tâm đến Bảo vệ Pháp cũng là một UGA theo thời gian, nhưng mong muốn chơi Ferzy Gambit và, đặc biệt, tiếng Anh mới bắt đầu vừa tăng lên.

Bạn sẽ làm gì trên trang web của sự mệt mỏi thiết yếu của sinh vật, chỉ là người đã thành thạo trò chơi với lịch sử 1400 năm? Sẽ chiếm lấy cái kia. Sau trận đấu từ cá chứng khoán, Alphazero đã dành cho "Đào tạo" chỉ hai giờ và đánh bại Elmo, động cơ máy tính mạnh nhất cho trò chơi ở Syogi.

Việc sử dụng chương trình tự học sáng tạo này, tất nhiên, không giới hạn trong các trò chơi.

"Nó luôn được tin rằng có quá nhiều kiến \u200b\u200bthức thực nghiệm trong Cờ vua từ máy để họ có thể chơi mạnh mẽ" từ đầu ", mà không sử dụng kiến \u200b\u200bthức của con người," Casparov nói. "Tất nhiên, tôi sẽ quan tâm để xem Những gì chúng ta có thể tìm hiểu về cờ vua. Với sự trợ giúp của Alphazero, mở triển vọng khổng lồ để học máy trong toàn bộ máy, có thể tìm thấy sự đều đặn không thể tiếp cận với mọi người. Rõ ràng là hậu quả kéo dài vượt xa Cờ vua và các trò chơi khác. Khả năng của Máy mở và vượt quá kiến \u200b\u200bthức về các hệ thống khép kín phức tạp, được nhân tạo tích lũy trong nhiều thế kỷ, - đây là một công cụ thay đổi thế giới. "

Các nhà báo cờ vua đã phỏng vấn tám trong số mười người tham gia giải đấu ở London về thái độ của họ đối với trận đấu chương trình. Video với một cuộc phỏng vấn sẽ được đăng trên trang web sau.

Những điều kiện rõ ràng nhất các điều kiện của trận đấu MG Hikar Nakamura. Bây giờ có một cuộc thảo luận nóng về sức mạnh điện toán của đối thủ, nhưng Nakamura tin rằng người khác quan trọng hơn.

Ông ngoại Mỹ gọi là trận đấu "không trung thực", chỉ định rằng để làm việc tối ưu động cơ, cá ekok nên sử dụng một cuốn sách đầu tay. Nakamura không nghĩ rằng với sự giúp đỡ của cô, cá kho sẽ thắng trận đấu, nhưng khoảng cách trong tài khoản sẽ ít hơn nhiều.

"Tôi chắc chắn rằng chính Chúa, chính Thiên Chúa sẽ không tăng 75% cặp kính có màu trắng mà không có bất kỳ Forow nào", anh nhận xét về kết quả Alphazero White: 25 chiến thắng và 25 trận hòa.

MG Larry Kaufman, một nhà tư vấn cờ vua hàng đầu Komodo Engine, hy vọng sẽ thấy chương trình mới hoạt động tốt như thế nào trên các máy tính cá nhân, mà không cần sử dụng các dòng điện tính của Google. Anh ta cũng lặp lại sự phản đối thể hiện bởi Nakakura về thực tế rằng Cờ lê đã chơi mà không có kiến \u200b\u200bthức đầu tay thông thường.

"Tất nhiên, gần như thật đáng kinh ngạc", ông nói, "Vâng, tôi đã nghe về những thành tựu của Alphago Zero trong trò chơi và mong đợi một cái gì đó như thế này, xem xét rằng nhóm phát triển đã có một cầu thủ cờ vua Demis Hassabis. Tuy nhiên, không rõ liệu chương trình alphazero có thể chơi cờ trên máy tính thông thường hay không, và nó thành công như thế nào. Có lẽ sự phổ biến hiện đại của động cơ cờ vua sử dụng một tính năng Minimax đang kết thúc, nhưng cho đến nay vẫn còn quá sớm để tuyên bố nó. Điều đáng giá cho thấy rằng trong quá trình đào tạo Alphazero de Facto đã tạo ra cuốn sách đầu tay của riêng mình, vì vậy sẽ công bằng hơn khi sử dụng nó với động cơ với một cuốn sách đầu tay tốt. "

Không chạm vào các điều kiện của trận đấu, Nielsen được hình thành, trong những lĩnh vực học tập nào khác có thể được áp dụng.

"[Điều này] Trí tuệ nhân tạo hiện đại", Grossmaster nói. "Anh ấy đến từ một cái gì đó như cờ vua cho các vấn đề xứng đáng với giải thưởng Nobel và thậm chí nhiều hơn nữa. Tôi nghĩ rằng chúng tôi đã may mắn vì họ quyết định dành bốn giờ trên cờ vua, nhưng hậu quả của khám phá này có ý nghĩa hơn nhiều. "

Chủ đề, tuổi của học sinh

Tin học và CNTT, lớp 10-11

Dự án trừu tượng ngắn gọn

Dự án được phát triển như một phần của kỷ luật "Tin học và CNTT" cho học sinh lớp 10-11

Câu hỏi hướng dẫn dự án

Câu hỏi cơ bản

Một máy tính có thể thay thế một người?

Vấn đề vấn đề

1. Một máy tính có thể đưa các nhiệm vụ và giải quyết chúng?

2. Máy tính có thể tái tạo tất cả các hành động và suy nghĩ của một người không?

3. Máy tính có khả năng quản lý một người không?

Chương trình giáo dục

1. Máy tính có trách nhiệm nào?

2. EMM có tự cấu hình không?

3. Có thể tự động thay thế một người?

4. Trí tuệ nhân tạo \u003d Trí tuệ của con người?

5. Tôi có cần quản lý công việc của máy tính không?

6. Có thể đặt một robot "ở đầu của bảng"?

7. Máy tính có thể biết cách nghĩ không?

8. Có thể thay thế nhân tạo não người?

9. Người sẵn sàng hướng dẫn tất cả các công việc với robot?

Kế hoạch dự án

Đại diện của tình huống vấn đề:

Giáo viên cần giữ một động não với sinh viên để xác định kiến \u200b\u200bthức hiện có của sinh viên về vấn đề, động lực, khuynh hướng và sở thích của họ. Công cụ - Động não bằng cách sử dụng bản trình bày bắt đầu. Với sự giúp đỡ của bài thuyết trình, giáo viên tạo ra một tình huống có vấn đề, tổ chức một cuộc tấn công não, thảo luận về các vấn đề đã phát sinh, chỉ định các giả thuyết và sự phân phối của học sinh về các nhóm theo chủ đề, có tính tiền lãi.

Dự án công việc:

Ở giai đoạn đầu của dự án, giáo viên giúp từng nhóm chủ đề phân phối vai trò, thảo luận về chiến lược nghiên cứu, cách tìm kiếm thông tin, phương pháp nghiên cứu và khả năng thực hiện kết quả công việc. Kết quả là một kế hoạch hoạt động cá nhân. Hơn nữa, nghiên cứu độc lập bắt đầu, công việc tìm kiếm của sinh viên theo kế hoạch. Ở giai đoạn này, sinh viên thu thập thông tin về chủ đề của một vấn đề có vấn đề trong bách khoa toàn thư, sách giáo khoa và trên Internet, thảo luận về thông tin đã thu thập trong nhóm, phát triển các công cụ nghiên cứu, tiến hành nghiên cứu, so sánh kết quả của nó với thông tin được thu thập, rút \u200b\u200bra kết luận sẽ là một phản ứng với câu hỏi có vấn đề. Trọng tâm của giáo viên nên được trao cho các cuộc thảo luận giữa các nhóm, các cuộc thảo luận trong nhóm, tham khảo ý kiến \u200b\u200bcủa giáo viên chủ đề. Chủ sở hữu lòng tự trọng sẽ giúp những người tham gia dự án nhận ra mức độ tăng trưởng cá nhân.

Đăng ký hoạt động của dự án:

Thiết kế của kết quả được lên kế hoạch dưới dạng bài thuyết trình, tập sách hoặc wiki-bài viết, vì vậy ở đây bạn có thể cần tham khảo ý kiến \u200b\u200bcủa giáo viên khoa học máy tính, trên một trong những cuộc tham vấn cần thiết để thảo luận với các bạn các tiêu chí để ước tính các sản phẩm này . Đồng thời, hiệu suất của nhóm đang chuẩn bị, vì vậy trong các tiêu chí đánh giá, cần phải đặt các mặt hàng để ước tính bài phát biểu của học sinh, khả năng đặt câu hỏi và trả lời họ.

Bảo vệ dự án, Thảo luận, Thảo luận:

Trong quá trình bảo vệ, mỗi nhóm trình bày công việc (bài thuyết trình, tập sách hoặc wiki-bài viết), trả lời các câu hỏi. Đánh giá xảy ra thông qua nhóm được phát triển bởi các tiêu chí, người tham gia các nhóm khác, giáo viên. Bảo vệ các dự án cho phép bạn trả lời câu hỏi cơ bản, xây dựng các kết luận chung về kết quả.

Vào cuối công việc:

Yếu tố cần thiết của toàn bộ hoạt động của dự án là phân tích công việc được thực hiện, nơi giáo viên thảo luận với các sinh viên rằng họ đã làm điều đó xảy ra rằng nó không hoạt động và tại sao. Ở giai đoạn này, bạn có thể liên hệ lại với lòng tự trọng và thấy sự tăng trưởng chất lượng cao của từng người tham gia. Ngoài ra, một phản xạ blog là có thể. Nó trở nên quan trọng để được trao tặng nhóm. Và bạn có thể làm quen với trang web của dự án.

Dự án danh thiếp

Xuất bản giáo viên


1997, New York. Nhà vô địch thế giới trong Chess Garry Kasparov mất đi máy tính "Deep Blue" của công ty IBM, và trận chiến này trở thành bữa tiệc cờ vua vĩ đại nhất mọi thời đại và mọi người. Trò chơi này sẽ nói về "Trận chiến cuối cùng của tâm trí con người", nhiều người sẽ so sánh nó với chuyến bay đầu tiên của Wright Brothers và Disembarka của các phi hành gia trên mặt trăng.

Ngày 20 tháng 7 - Ngày cờ quốc tế - nói với bạn về những gì đã xảy ra tiếp theo. Và cũng về những gì trí tuệ nhân tạo là kém hơn người, và nơi Alan Turing đang ở đây. Từ harry kasparov, nhà vô địch cờ vua thế giới và tác giả sách.

Nghịch lý, nhưng trong một trò chơi đồng thời của trò chơi đồng thời với những người chơi cờ hiệu chuyên nghiệp tốt nhất, robot là cách khó di chuyển giữa các bảng và sắp xếp lại các quân cờ, và không đếm các động thái. Mặc dù khoa học khoa học trong nhiều thế kỷ đã đưa ra automata trông và di chuyển như mọi người, và robot ngày nay được tham gia vào lao động thể chất, bạn phải thừa nhận rằng những chiếc xe của chúng tôi tái tạo những suy nghĩ của con người hơn nhiều so với chuyển động của con người.

Trong Cờ vua, như trong nhiều lĩnh vực hoạt động khác, những chiếc xe hơi mạnh về những gì mọi người yếu đuối và ngược lại.

Nguyên tắc nổi tiếng này trong lĩnh vực trí tuệ nhân tạo và robot được công thức kênh Meres trong năm, nơi lưu ý rằng "tương đối đơn giản để đảm bảo rằng các máy tính thực hiện thử nghiệm phát triển tinh thần hoặc chơi trong cờ đam ở cấp độ của người lớn, nhưng nó thật khó khăn hoặc không thể đưa ra các kỹ năng của một đứa trẻ một tuổi trong đầu cho nhận thức hoặc khả năng vận động. "

Lúc đó tôi không nhận thức được những lý thuyết này; Ngoài ra, Canvas đã nói về Checkers, và không phải về cờ vua, nhưng mười năm sau, rõ ràng là nguyên tắc này áp dụng cho lĩnh vực hoạt động của tôi. Các bà bầu đã đối phó hoàn hảo với ước tính về vị trí và hoạch định chiến lược - những nơi yếu của máy tính cờ, nhưng họ có thể tính toán hậu quả chiến thuật trong vài giây, mà ngay cả những tâm trí con người tốt nhất cũng sẽ được yêu cầu trong nhiều ngày.

Nó áp dụng cho tôi một ý tưởng. Sau trận đấu của tôi với màu xanh đậm thu hút rất chú ý, tôi muốn tiếp tục thí nghiệm cờ vua, mặc dù thực tế là IBM đã từ chối họ.

Kế hoạch của tôi, chỉ đơn giản là nói, như vậy: Nếu bạn không thể thắng được, hãy tham gia cùng họ.

Tôi nghĩ: Điều gì xảy ra nếu một người và chiếc xe không phải là đối thủ, mà là đối tác? Ý tưởng này đã được thể hiện trong năm ở Leone Tây Ban Nha, nơi xảy ra trận đấu cờ vua tiên tiến đầu tiên (cờ vua nâng cao). Cả hai đối tác đã có một máy tính cá nhân trong tầm tay và có thể sử dụng bất kỳ chương trình nào trong sự lựa chọn của họ trong bữa tiệc. Mục tiêu là bước vào mức mới, mức cao nhất của trò chơi - do sự tổng hợp của các cạnh mạnh nhất của trí thông minh của con người và máy. Mặc dù, như chúng ta sẽ thấy xa hơn, không phải tất cả mọi thứ trôi qua, kết quả nổi bật của những trận chiến Centaurs này đã thuyết phục tôi rằng Cờ vua vẫn có thể cung cấp rất nhiều trong một khu vực như sự tương tác của tâm trí con người và trí tuệ nhân tạo.

Để kết án này, tôi đã đến xa trước. Chessings là một nghĩa địa thần thánh từ lâu trước khi mọi người học cách tạo ra họ. Và bây giờ khoa học cuối cùng đã đạt được quyền truy cập vào chiếc cốc này - và tôi hóa ra là người giữ cô ấy trong tay. Trước mặt tôi đứng một lựa chọn: Từ chối cuộc gọi hoặc lấy nó. Làm thế nào tôi có thể cưỡng lại? Đó là một cơ hội để nâng cao hơn nữa sự nổi tiếng của cờ vua và mở rộng khán giả chinh phục bởi họ sau trận đấu nổi tiếng giữa Bobby Fisher và Boris Spassky trong Chiến tranh Lạnh và sau trận chiến của tôi đối với vương miện thế giới với Anatoly Karpov. Điều này sẽ cho phép quân đội các nhà tài trợ hào phóng với thế giới cờ vua, đặc biệt là từ số lượng công ty công nghệ cao. Do đó, Intel Corporation vào giữa những năm 1990 đã tài trợ cho toàn bộ loạt các giải đấu cờ vua nhanh và cổ điển và một chu kỳ đầy đủ của World Cup, bao gồm cả trận đấu danh hiệu của tôi với Vishvanatan Anand, được tổ chức trên tầng cao nhất của Trung tâm Thương mại Thế giới. Ngoài ra, tôi đã quản lý một sự tò mò không thể vượt qua. Những chiếc xe có thực sự có thể học cách chơi cờ là tốt như nhà vô địch thế giới không? Họ có thực sự có thể nghĩ không?

tôi tự hỏi rằng
chương trình cờ đầu tiên xuất hiện sớm hơn máy tính đầu tiên.

Cô đã phát triển một nhà toán học người Anh tuyệt vời Alan Turing, người đã hack mã của máy mã hóa Nazi "Enigma". Năm 1952, ông đã viết một thuật toán trên giấy, với sự giúp đỡ của chiếc xe có thể chơi cờ vua, và chính nhà toán học đã biểu diễn trong vai trò của bộ xử lý trung tâm. "Máy giấy của Turing" hóa ra là một người chơi hoàn toàn có thẩm quyền. Lý do cho thiết kế của nó đã vượt quá khuôn khổ lợi ích cá nhân của Turing To Cờ vua. Khả năng chơi cờ đã được coi là một phần của trí tuệ của con người, và việc tạo ra một thiết bị có khả năng đánh bại một người trong trò chơi này sẽ đánh dấu sự xuất hiện của một chiếc xe thông minh thực sự.

Tên của Alan Tyurring cũng được kết nối mãi mãi với tên của thí nghiệm tinh thần được đề xuất bởi họ, sau đó được tiến hành trong thực tế và tên "Test Turing". Bản chất của nó là xác định xem máy tính sẽ có thể lừa dối một người theo cách mà anh ta nghĩ rằng nó đang đối phó với một người, và nếu anh ta có thể - bài kiểm tra được coi là đã được thông qua. Ngay cả trước trận đấu đầu tiên của tôi với màu xanh đậm, các máy tính bắt đầu trải qua những gì có thể được gọi là "Cờ vua Testa của Turing". Họ vẫn chơi khá tệ và thường làm rõ ràng là vô nhân đạo di chuyển, nhưng đôi khi họ đã chơi các bữa tiệc trông khá phù hợp và trong một giải đấu người đàng hoàng. Mỗi năm chiếc xe trở nên mạnh mẽ và mạnh mẽ hơn, nhưng trong quá trình tiến hóa của họ, chúng tôi đã học được nhiều hơn về bản thân cờ so với trí tuệ nhân tạo (AI).

Không thể lập luận rằng cao trào của các tìm kiếm 45 tuổi, đã trở thành một sự kiện trên toàn thế giới quay lại với sự thất vọng, nhưng cô ấy rõ ràng cho thấy rằng nó không giống như để tạo ra một trí tuệ nhân tạo có thể so sánh với tâm trí con người , những gì đã có thể so sánh Turing và những người khác.

Về bản chất, "tâm trí" của màu xanh đậm không khác với "tâm trí" của báo thức lập trình.

Nghĩ về nó chỉ làm nặng thêm sự cay đắng của tôi - mất phòng khám báo động lập trình, ngay cả khi 10 triệu đô la và trị giá 10 triệu đô la?

Tất nhiên, cộng đồng AI được gọi là, hãy vui mừng kết quả và thu hút sự chú ý, nhưng đồng thời các học giả rõ ràng bị nản lòng bởi thực tế là màu xanh đậm không giống với trí tuệ nhân tạo mà những người tiền nhiệm của họ mơ ước. Thay vì chơi cờ vua như một người - thể hiện trực giác của con người và tư duy sáng tạo không chuẩn, anh ta chơi cờ vua như một chiếc xe hơi: đánh giá tới 200 triệu động tác có thể có mỗi giây và chiến thắng do sức mạnh tính toán thô. Tất nhiên, điều này không làm giảm rất nhiều thành tích. Cuối cùng, Deep Blue là sự sáng tạo của tâm trí con người, và sự mất mát của người đó do chiếc xe tạo ra đồng thời có nghĩa là chiến thắng của mình.

Sau một điện áp đáng kinh ngạc của trận đấu đó, trở nên trầm trọng hơn bởi hành vi đáng ngờ của IBM và xu hướng nghi ngờ của tôi, tôi đã không sẵn sàng để dễ dàng nhận ra thất bại của mình. Thành thật mà nói, tôi không bao giờ biết cách thua. Tôi tin rằng một người dễ dàng mở rộng với sự thất bại sẽ không bao giờ trở thành một nhà vô địch thực sự, và nguyên tắc này, tất nhiên, cũng công bằng và trong trường hợp của tôi. Nhưng tôi tin vào một cuộc đấu tranh trung thực. Sau đó, tôi tin rằng IBM đã lừa dối tôi - cũng như cả thế giới, nơi đã theo sát trận đấu của chúng tôi.

Phải thừa nhận rằng phân tích lặp đi lặp lại của từng khía cạnh của cuộc đấu tay đôi liêm phách với màu xanh đậm hóa ra là khó khăn.

Trong nhiều năm, tôi cố tình tránh bất kỳ cuộc trò chuyện nào về chủ đề này, chỉ lấy những gì đã được công chúng biết đến.

Các ấn phẩm dành riêng cho màu xanh đậm, một bộ tuyệt vời, nhưng cuốn sách này là người đầu tiên và duy nhất mà tất cả các sự kiện được thu thập và toàn bộ câu chuyện được kể khi tôi nhìn thấy nó. Bất chấp sự đau nhức của những kỷ niệm, đó là một trải nghiệm hướng dẫn và có lợi. Giáo viên vĩ đại của tôi Mikhail Botvinnik, nhà vô địch thế giới thứ sáu trong Cờ vua, đã dạy tôi tìm sự thật ở mọi vị trí. Và tôi đã cố gắng thực hiện giao ước của mình và tìm kiếm sự thật trong chính bản chất của màu xanh đậm.

Hình minh họa: Shutterstock.

Gửi công việc tốt của bạn trong cơ sở tri thức là đơn giản. Sử dụng mẫu dưới đây

Học sinh, sinh viên tốt nghiệp, các nhà khoa học trẻ tuổi sử dụng cơ sở kiến \u200b\u200bthức trong nghiên cứu và công việc của họ sẽ rất biết ơn bạn.

Gửi bởi http://www.allbest.ru/

Phát triểnphần mềmmô-đun.nhân tạo.trí tuệ.chotrò chơitrongcờ vua

cờ vua thuật toán trí tuệ

  • Giới thiệu

Khái niệm về "Cờ máy tính" là một nhóm khoa học về Cybernetics và phần "trí tuệ nhân tạo". Cờ vua là một mô hình lý tưởng cho nghiên cứu các nhiệm vụ phức tạp, đặc biệt là những nơi bạn cần để mua sắm tùy chọn. Sự phát triển của một chương trình cờ vua đề cập đến vấn đề phát triển trí tuệ nhân tạo vì những lý do sau:

* Có sự tự tin chung rằng nhiệm vụ có liên quan đến vấn đề trí tuệ nhân tạo, vì cờ vua được coi là trò chơi trí tuệ nhất

* Có một tiêu chí khách quan của công việc được thực hiện - Sức mạnh của chương trình cờ vua

* Sự khác biệt lớn của tiêu chí này đại diện cho khả năng cải thiện dần dần chương trình.

Một trong những người sáng lập Cybernetics và Lý thuyết thông tin - Claude Shannon - trong những năm 50, lần đầu tiên xây dựng các quy tắc để chọn đột quỵ trên bàn cờ. Ở vị trí được phân tích cho một độ sâu nhất định, tất cả các tùy chọn có thể được di chuyển và tổng số vị trí sử dụng các hàm mục tiêu được gán một đánh giá số. Sau đó, thủ tục minimax được thực hiện để quay trở lại vị trí ban đầu, đánh giá của nó xảy ra và tốt nhất, theo xe, được chỉ định.

Vai trò của một người là ước tính vị trí, chính xác nhất có thể để đặt các chức năng đích. Các chức năng này có hai thành phần - vật liệu và vị trí. Từ những thứ đầu tiên là rõ ràng - lợi thế vật chất (trong số liệu và cầm đồ) là một quy tắc, một đối số rất nghiêm trọng để đánh giá vị trí là tốt nhất. Ngoài ra, vật liệu nhỏ hơn trên bảng ở cả hai bên, đánh giá càng chính xác.

Nhưng với thành phần vị trí, mọi thứ phức tạp hơn nhiều: Nhiều yếu tố được tính đến, ví dụ, các tính năng của vị trí của các hình dạng và cầm đồ riêng lẻ, không gian trên bảng, thời gian để tập hợp lại lực lượng và những người khác. Khả năng đánh giá cao Vai trò của tất cả các yếu tố ở một vị trí nhất định luôn được coi là một trong những dấu hiệu của skimmer của những người chơi cờ. -Of mọi người.

Điểm yếu của trò chơi máy tính là chính xác trong việc lạm dụng vật chất và sự bất khả thi của việc thực hiện "lực lượng vũ phu" tuyệt đối của các lựa chọn. Trong sách cờ vua của thập niên 70 và những năm 1980, bạn có thể tìm thấy một số lượng đáng kể các ví dụ mẫu mực của trò chơi của những người có máy móc khi Master hoặc Grandmaster giành được bữa tiệc với sự hy sinh tuyệt đẹp của những con số và cầm đồ. Bí mật đã rõ ràng: đối với trí thông minh của con người, trái ngược với nhân tạo, sự thống trị của các yếu tố vị trí là rõ ràng trong những khoảnh khắc đó khi các nạn nhân của vật liệu được thực hiện.

Nhiều năm trôi qua, với sự gia tăng tốc độ của máy tính, độ sâu tính toán tăng lên, đồng thời các thuật toán được cải thiện, điều này cải thiện việc tổng hợp các chức năng của đánh giá vị trí. Và trong nửa sau của thập niên 90, các máy tính đã trở nên cạnh tranh thành công với các grasisters của Extra-Class. Kepochal cho "Cybernetics Cybernetics" Sự kiện xảy ra vào tháng 5 năm 1997. Được tạo bởi IBM Corporation Deep Blue trong trận đấu từ 6 Bên đã giành chiến thắng Harry Kasparov. Máy tính được trang bị một con chip cờ đặc biệt và chiếc xe đã xem qua khoảng 200 triệu vị trí mỗi giây. Tập đoàn IBM cho dự án của ông đã thu hút nhiều nhân viên đại gia, những thành tựu mới nhất của lý thuyết cờ đã được sử dụng để tạo ra nhiều thuật toán hoàn hảo nhất có thể. Và như vậy, như đã lưu ý, vào những năm 90, các chương trình cờ vua cho các máy tính để bàn bắt đầu đóng các máy tính chuyên dụng.

Mỗi tháng, sức mạnh của các chương trình cờ vua và sức mạnh của máy tính tăng không thể vượt trội, trước cả những giả định táo bạo nhất của những người lạc quan. Thêm 12-15 năm trước về chủ đề "Khi nào chiếc xe sẽ có thể đánh bại Grandmaster?" Về cơ bản, nó đã được giảm xuống câu hỏi "Có khả năng làm điều này về nguyên tắc không?". Và nếu câu trả lời "có thể" vẫn còn quản lý để có được, thời gian ước tính trong khoảng thời gian 15-25 năm.

Thực tế đã bác bỏ những dự báo này. Mọi thứ xảy ra nhanh hơn nhiều! Đã vào giữa những năm 90, người ta thấy rằng sự tổng hợp của "chương trình trò chơi + máy tính" có thể cạnh tranh với Grandmaster.

Mục đích của công việc là phát triển và triển khai mô-đun phần mềm trí tuệ nhân tạo cho trò chơi cờ vua, bao gồm:

1. Nghiên cứu các thuật toán trò chơi hiện có Cờ vua áp dụng

2. Phát triển thuật toán của hành vi của đối thủ máy tính

3. Xác định các tham số của thuật toán của hành vi của đối thủ máy tính

4. Triển khai phần mềm, bao gồm việc thực hiện thuật toán trò chơi và sự phát triển của giao diện đồ họa

5. So sánh phần mềm được phát triển với các chất tương tự hiện có.

1 . Lịch sửphát triểncờ vuachương trình

Năm 1951, Alan Turing đã viết một thuật toán, mà chiếc xe có thể chơi cờ. Chỉ tại thời điểm đó, chính nhà phát minh đã thực hiện trong vai trò của chiếc xe. Trong cùng một năm 1951, nhà toán học Claude Shannon viết bài viết đầu tiên về lập trình cờ vua. Ông đã mô tả hai chiến lược để tìm rẽ tốt hơn, cả hai đều dựa trên chức năng heuristic của ước tính điểm cuối:

* Loại A - Bust tất cả các di chuyển có thể đến độ sâu cố định, với một cuộc gọi ở cuối chức năng ước tính (vì không thể mở rộng đến cùng)

* Loại B - Chỉ thực hiện mở rộng chọn lọc các hàng nhất định bằng kiến \u200b\u200bthức Tích lũy để cắt các nhánh không thú vị

Máy tính đầu tiên được thiết kế bởi NEUMANNA Nền để duy trì các tính toán phức tạp khi tạo vũ khí hạt nhân. Năm 1950, một mẫu đầu tiên xuất hiện, có khả năng sản xuất 10.000 thao tác mỗi giây. Một trong những thí nghiệm đầu tiên với bộ máy là văn bản của một chương trình cờ vua, tuy nhiên, cờ vua không chuẩn - trên một bảng 6 * 6 không có voi.

Vài năm sau, máy tính này ("Maniac") đã chơi với mọi người: một cầu thủ cờ vua mạnh mẽ đã giành chiến thắng tự tin, và người mới đã thua trong 23 cú đánh.

Năm 1957, IBM704 (42 kHz, 7 Kbytes-Perman) đã được triển khai trong chương trình trên một bảng đầy đủ, với sự tham gia của tất cả các số liệu. Chiếc xe tin 4 ngày trong 8 phút. Mức độ của trò chơi là nghiệp dư.

Năm 1962, Newel, Simon và Shaw mở một thuật toán gọi là Alpha-Beta (Alpha-beta), anh ta đã đưa ra kết quả không tệ hơn cả bức tượng bán thân đầy đủ, mà không cần khám phá tất cả các tùy chọn. Nó không yêu cầu bất kỳ kiến \u200b\u200bthức cờ vua đặc biệt nào, và nó có thể được áp dụng để giải quyết bất kỳ nhiệm vụ phát sóng nào. Tinh chất của thuật toán là trong mỗi hàng của trò chơi, cho màu trắng và đen kết quả tối đa của chúng được theo dõi và nếu vào một lúc nào đó màu đen đã nhận được kết quả, đã được thực hiện với tối đa màu trắng, đạt được trước đó, Sau đó, nó không có ý nghĩa để diệt trừ. Khi bức tượng bán thân trở về điểm mà tối đa màu trắng đạt được, kết quả, nó vẫn sẽ bị từ chối. Cơ sở của tất cả các chương trình cờ vua hiện đại là một trong những phiên bản nâng cao của thuật toán này.

Khoảng năm 1973, tất cả các chương trình cờ vua đều là loại V. Chúng chủ yếu dựa trên máy phát điện chuyển vị hợp lý, cắt giảm với một đánh giá tĩnh về tác dụng nhỏ. Với sự ra đời của bộ xử lý mạnh mẽ hơn, các lập trình viên bắt đầu chuyển sang loại A. Đầu tiên là dạy và cờ vua4, đây là các chương trình "sức mạnh thô sơ" ngay khi chúng đạt độ sâu 5 siêng năng của giai đoạn giữa, họ bắt đầu giành chiến thắng Trong các cuộc thi với các chương trình loại V.

Năm 1975, Robert Hyat bắt đầu phát triển CrayBlitz, từ lâu đã là chương trình cờ vua nhanh nhất trong một thời gian dài và từ 1983 đến 1989. - Vô địch thế giới giữa các chương trình cờ vua. Anh ta đang tìm kiếm khoảng 40-50 nghìn vị trí mỗi giây (vào năm 1983) rằng trong thời gian của mình là một thành tựu tuyệt vời.

Năm 1977, Thompson và Condon từ Phòng thí nghiệm Bell tạo ra cộng đồng cờ vua chuyên biệt đầu tiên. Ý tưởng cơ bản là trong việc triển khai một số phần của chương trình cờ vua (máy phát đột quỵ, các chức năng ước tính vị trí, máy dò shakhov, v.v.) ở cấp độ phần cứng, đã tiết kiệm sự chậm trễ của chương trình ở mỗi vị trí mà không cần phải tăng trong sức mạnh của bộ xử lý. Các máy tính tốt nhất thời lần đó có thể khám phá tới 5.000 vị trí mỗi giây và máy Tompson Ken, mà Belle có tên, đã xử lý 180 nghìn hàng mỗi giây. Belle có thể nghĩ về các vị trí của 8-9 Dips về phía trước, đưa nó vào cấp độ phù thủy. Ông đã giành được nhiều giải đấu cờ vua máy tính. Nhưng mặc dù thực tế là sắt chuyên dụng là một thứ tự cường độ nhanh hơn chiếc xe thông thường, chương trình CrayBlitz ở cấp trên thì chiếc xe vẫn còn chơi tốt hơn.

Vào những năm 90, Richard Lang, chỉ viết trên trình biên dịch biên giới, đã tạo ra một chương trình tìm kiếm chọn lọc thiên tài rất mạnh. Cho đến bây giờ, chương trình này đã được giữ ổn định một vị trí 5-6 trên Giải vô địch cờ vua toàn cầu. Ngoài ra, vào những năm 90, các thuật toán cờ vua bắt đầu phát triển mạnh mẽ, Euristic đột quỵ xuất hiện (nullmove), chọn lọc cắt bỏ các nhánh biên giới của cây nhộn nhịp.

Một cách riêng biệt, nó đáng để xem xét chương trình cờ vua nổi tiếng nhất, một siêu máy tính cờ vua - màu xanh đậm. Năm 1987, Deep Blue bắt đầu khi phát triển sinh viên - thật thú vị khi có một nhóm học sinh có khả năng thử sức mạnh của họ, và chủ đề cho bằng tốt nghiệp là tuyệt vời. Tiến độ của công nghệ được phép thực hiện phiên bản đầu tiên của bộ xử lý (được gọi là Chiptest) rất nhanh. Sau đây, phiên bản nâng cao, có tên là suy nghĩ sâu sắc theo sau. Tại thời điểm này, nhóm lưu ý bộ phận tiếp thị của IBM của công ty và giải quyết nó với một đề xuất, từ đó không thể từ chối. Kết quả của thép màu xanh đậm và xanh đậm II. Do đó, Deep Blue II là kết quả của hơn 10 năm hoạt động của một nhóm rất có khả năng, trong đó cả lập trình viên / đường sắt và các nhân viên lớn nghiêm trọng. Tất cả các công việc được tài trợ bởi IBM, vì vậy nhóm có tài nguyên không mơ ước của các tổ chức học thuật. Deep Blue II được thực hiện dựa trên máy chủ IBM RS / 6000 mạnh mẽ. Máy chủ có 31 bộ xử lý thông thường; Một người tuyên bố là điều chính, nó phải chịu 30 người khác. 16 bộ xử lý cờ vua chuyên dụng được kết nối với mỗi bộ xử lý "công nhân", theo cách này có 480 bộ xử lý cờ vua. Toàn bộ phức hợp đã xử lý hơn một tỷ vị trí mỗi giây.

Vào ngày 11 tháng 5 năm 1997, Deep Blue II đã giành chức vô địch thế giới của Chess Garry Kasparov trong trận đấu từ 6 bữa tiệc. Sau trận đấu với nhà vô địch, màu xanh đậm đã được tháo rời.

Như bạn có thể thấy, bắt đầu từ đầu tiên và kết thúc với các chương trình hiện đại nhất, các chương trình cờ vua đã được xây dựng trên cơ sở tính toàn vẹn của các động thái có thể xảy ra, nhưng đã có những nỗ lực để xây dựng nhiều thuật toán trí tuệ trên mạng khác ngoài sự áp đảo. Nhiều người chơi cờ nổi tiếng đã cố gắng phát triển các thuật toán như vậy, nhưng kết quả không đáp ứng các yêu cầu. Ví dụ, Botvinnik M.M., là một nhà vô địch thế giới và tác giả của nhiều công trình về lý thuyết cờ vua, trong hơn 20 năm, đã tham gia vào việc tạo ra một chương trình cờ vua, nhưng chương trình không bao giờ chơi.

Tất cả các thuật toán quá tải để tìm khóa học tốt nhất là xây dựng một cây của trò chơi và nó đang tìm kiếm động thái tốt nhất.

2. Chungcác khái niệmhọc thuyếttrò chơi

2.1 Gỗkhả thivị trí

Hãy để cây theo định hướng cuối cùng G, bộ trong các đỉnh của nó được tạo thành từ hai tập hợp con không chu kỳ B0 và B1 và \u200b\u200bbất kỳ đỉnh nào P B, không phải là bắt đầu của bất kỳ liên kết nào của cây này, được đưa vào việc tuân thủ số thực tế Oe (p). Điều này xác định trò chơi của hai đối thủ với thông tin đầy đủ. Các đỉnh của cây định hướng G, thuộc tập con của B0, được gọi là các vị trí có màu trắng và tập hợp con của B1 - vị trí với các động tác màu đen; Các liên kết của cây này được gọi là các nét màu trắng hoặc đen, tùy thuộc vào mục tiêu của B0 hoặc B1 thuộc về bắt đầu của chúng. Nếu vị trí P B được đặt theo số OE (P), nó được gọi là Chung kết và OE (P) được gọi là đánh giá tĩnh về vị trí này.

Cây định hướng g gọi là cây trò chơi.

Theo định nghĩa cho bất kỳ vị trí PB, có đường dẫn duy nhất L (P0\u003e P1, P1\u003e P2, ..., PK\u003e P) với phần đầu ở gốc P0 Root định hướng R và kết thúc ở vị trí đang xem xét , Con đường này được gọi là một bữa tiệc dẫn đến vị trí p.

Trò chơi gốc P0 Tree G là một vị trí được tô sáng. Đây là vị trí được đề xuất bởi chương trình, và nhiệm vụ là tìm khóa học tốt nhất trong đó. Để làm điều này, nó là đủ để xác định OEP0 và OEPI cho tất cả các vị trí thu được từ P0 mỗi khóa học. Các định nghĩa về ước tính của vị trí ban đầu P0 được thực hiện bởi sơ đồ dập tắt hoàn toàn, và trong lý thuyết về trò chơi, thuật toán này được gọi là thuật toán Negamax.

Sự phức tạp của cây chơi game được tính bằng công thức: W ^ D, trong đó W là số lượng động tác có thể trung bình, và độ sâu của cây.

Hình 1 - Cây của các vị trí có thể

2.2 Nguyên tắcminimax.

Thuật toán này được thực hiện bằng cách tìm kiếm sâu. Đó là, đối với mỗi đỉnh được rao giảng, cần tìm tất cả các đỉnh liền kề và lặp lại tìm kiếm cho chúng. Chúng tôi quay trở lại đầu trang độ sâu cuối cùng và mong đợi sự thắng lợi của người chơi đầu tiên. Sau đó, từ nút cha, đi đến nút con tiếp theo (nếu có) và chúng tôi hy vọng các kính tiền thắng ở đó. Nếu số lượng nút công ty con kết thúc, thì chúng ta đang tìm kiếm tối thiểu tiền thắng (nếu mức độ của nút cha là số lẻ) hoặc tối đa (nếu thậm chí). Nút của cha mẹ có mức tăng đạt được. Chúng tôi tạo một tìm kiếm tương tự, nhưng đã xem xét rằng nút cha mẹ đã là công ty con.

Trong lá của cây, việc tính điểm xảy ra so với người chơi đầu tiên, tức là. Người ta tin rằng người chơi đầu tiên tìm cách tối đa hóa tiền thắng của mình và người chơi thứ hai để giảm thiểu số tiền thắng của người chơi chiến thắng. Người chơi đầu tiên sẽ thắng trong trường hợp số điểm trên đỉnh của cây cấp độ lớn hơn 0.

Hình 2 - Tìm kiếm về thuật toán Minimax về thuật toán cây

Do đó, quá trình được chương trình sử dụng tương ứng với các giải pháp xen kẽ (máy tính / người), trên mỗi khóa học, máy tính chọn xếp hạng tối đa. Giải pháp trở lại gốc cây chắc chắn hóa ra là sự lựa chọn tốt nhất, dưới giả định rằng kẻ thù trong mỗi trường hợp cũng làm cho những động thái mạnh nhất. Ước tính tĩnh chỉ được thực hiện trong các nút của cấp độ cuối cùng (lá cây) cho vị trí của máy tính.

Thuật toán này thực hiện một tìm kiếm đầy đủ về tất cả các tùy chọn. Số lượng các vị trí được xem xét sẽ được đánh giá là mức độ D, trong đó W là một số lượng di chuyển gần đúng ở một vị trí, D là độ sâu của tính toán sai. Đối với Cờ W khoảng 40, điều này có nghĩa là đếm đến độ sâu 4, chúng ta phải quá sức 40 ^ 4 \u003d 2560 nghìn vị trí và cho độ sâu 5 - 10240 nghìn vị trí.

Cây nhộn nhịp đang phát triển theo cấp số nhân. Đến nay, trên các bộ xử lý mạnh nhất, với mã tối ưu nhất, có thể được coi là độ sâu 6 theo khoảng thời gian ước tính thực. Đây là vấn đề chính của sự phát triển của các thuật toán trò chơi cờ vua và tất cả các phát triển đều nhằm giảm các kết hợp kết hợp.

Hình 3 cho thấy sơ đồ khối của thuật toán MINDAX để lựa chọn một tiến độ tốt hơn, thuật toán được trình bày bởi thuật toán trả về tiến trình tốt nhất về đánh giá thu được với một phân tích sâu hơn. Sơ đồ khối của thuật toán để tìm đánh giá trong độ sâu được trình bày trong Hình 4.

Hình 3 - Sơ đồ khối cho sự lựa chọn đột quỵ tốt hơn

Hình 4 - Sơ đồ khối để tìm kiếm đánh giá về độ sâu

Khi bạn gọi một thuật toán để tìm đánh giá về độ sâu với độ sâu cần thiết rất lớn, chúng tôi sẽ có được một đánh giá với toàn vẹn đầy đủ của tất cả các động tác có thể.

2.3 phương pháptiêu cựctối đa.(Negamax)

Trong thuật toán này, ước tính tĩnh của vị trí cho một trong các bên bằng với đánh giá tĩnh của phía bên kia với dấu hiệu ngược lại.

Hình 5 - Phương pháp tối đa âm

2.4 Tĩnh.Đánh giáchức vụbảo trìyêu cầuđếnước lượngchức năng

Ước tính tĩnh của vị trí là một phương pháp thể hiện mục tiêu, định lượng của cảm giác chủ quan xảy ra ở một người khi nhìn vào một vị trí, mà không phân tích các cách có thể để phát triển trò chơi. Trong các trò chơi lập trình, đánh giá vị trí tĩnh được gọi là tính năng chất lượng vị trí.

Nếu tìm thấy một động thái tốt hơn với sự trợ giúp của cây trò chơi có thể được áp dụng với cùng một thành công cho tất cả các trò chơi, thì đánh giá vị trí tĩnh là một phần chuyên về một trò chơi nhất định. Chuyên môn của nó xác định phong cách của trò chơi của một người chơi nhân tạo, các yếu tố được đặt trong chức năng ước tính xác định mục đích của sự nhộn nhịp.

Một so sánh về số lượng với một vị trí làm cho nó có thể phân biệt xe xấu và kết hợp tốt. Khả năng phân biệt các kết hợp tốt với xấu, xác định sức mạnh của một người chơi ảo. Trong các trò chơi của hai người, ước tính được thực hiện bởi một trong những người chơi. Nếu hàm ước tính trả về một ước tính tốt cho một người chơi, nó phải trả về đối với đối thủ của mình. Quy tắc này là tiêu chí của khả năng áp dụng của bất kỳ hàm định giá nào trong các thuật toán thực hiện trí tuệ nhân tạo.

Yêu cầu cơ bản cho chức năng đánh giá là tính đối xứng của nó liên quan đến người chơi, tức là. Một điều kiện phải được thực hiện - những gì tốt cho một người chơi, xấu cho người khác. Một tính năng ước tính tốt sẽ phải tính đến các nguyên tắc cơ bản của chiến lược trò chơi và đáp ứng các đặc điểm sau:

* Tài liệu - được tính trực tiếp là sự khác biệt về số lượng hình dạng người chơi, có thể thêm các hệ số trọng lượng cho mỗi hình cụ thể

* Định vị - hiển thị chất lượng của số liệu của người chơi

* Phát triển vị trí - hiển thị số lượng người chơi có thể di chuyển. Vị trí được phát triển tốt hơn, các chiến lược càng có thể có một người chơi. Vì lý do này, cần phải kiểm soát và giảm trạng thái của kẻ thù

* Theo dõi sự kết thúc của trò chơi - trong trường hợp chiến thắng (lấy vua của đối thủ), nên xếp hạng tối đa, thường là + vô cực, trong trường hợp mất (mất vua), phải trả lại mức tối thiểu, thường là vô cùng

Để chơi cờ, cần phải tính đến sự thay đổi trong việc đánh giá vị trí, tùy thuộc vào giai đoạn của bữa tiệc.

Chức năng ước tính cổ điển là một hàm từ một số đặc điểm trên của vị trí trò chơi, nghĩa là chức năng ước tính là tổng kết quả của ước tính vị trí từ các quan điểm khác nhau.

Chức năng ước tính cho tất cả các trò chơi là khác nhau, vì nó phản ánh các chi tiết cụ thể của trò chơi. Các tính năng đánh giá được chọn bằng thực nghiệm.

Tầm quan trọng của đặc điểm đã chọn là rất cần thiết. Tầm quan trọng được xác định bằng cách nhân các đặc điểm đã chọn sang hệ số tương ứng. Hệ số này phải có một biện minh thống kê.

Do đó, hàm ước tính có thể được biểu diễn dưới dạng sau:

F (p) - chức năng ước tính theo vị trí p,

Yếu tố quan trọng đối với đặc điểm I-OH,

Đặc điểm vị trí I-Aya P.

2.5 Dàn dựngnhiệm vụ

Trong quá trình thực hiện luận án, cần phải điều tra các phương pháp và thuật toán hiện có để triển khai máy tính của trò chơi cờ vua, xác định những ưu điểm chính và bất lợi của họ để, dựa trên kiến \u200b\u200bthức thu được, chọn một thuật toán cung cấp hoạt động tốt nhất của Hệ thống này.

Sau công việc tốt nghiệp, cần thiết:

tôi thực hiện các thuật toán được nghiên cứu trong ngôn ngữ lập trình C #

tôi thực hiện các sửa đổi khác nhau của họ bằng các mô-đun bổ sung

b Thực hiện các thí nghiệm bằng số để ước tính chất lượng của các mô hình được phát triển, so sánh các sửa đổi được thực hiện, để chọn tốt nhất

le phát triển một giao diện thuận tiện và trực quan

3. Điều trathuật toánbổ sung

3.1 Alpha beta.tiếp tục

Alpha-Beta Cleaning (Tiếng Anh Cắt tỉa Alpha-Beta) là một thuật toán tìm kiếm dường như làm giảm số lượng nút được đánh giá trong Cây tìm kiếm của thuật toán MinimAX. Ý tưởng chính như sau: Nếu một trong những di chuyển của bạn, đối thủ có một câu trả lời bất lợi cho bạn, nhưng thật vô nghĩa khi phân tích các câu trả lời có thể khác cho việc di chuyển này, bởi vì ngay cả khi chúng có lợi hơn cho bạn, đối thủ sẽ không chọn chúng. Alpha-Beta Clipping là tối ưu hóa, vì kết quả của thuật toán được tối ưu hóa không được thay đổi.

Hình 6 - Thuật toán Cutout Alpha-Beta

Ưu điểm của Alpha-Beta Cut-off thực sự nằm trong thực tế là một số nhánh của cây tìm kiếm có thể bị loại trừ sau ít nhất một trong những nhánh của cấp độ được xem xét hoàn toàn. Vì sự cắt giảm xảy ra ở mỗi cấp độ làm tổ (trừ lần cuối), hiệu ứng có thể khá đáng kể. Hiệu quả của phương pháp ảnh hưởng đáng kể đến việc phân loại sơ bộ các tùy chọn (không có sự nhộn nhịp hoặc với độ sâu nhỏ hơn) - trong quá trình sắp xếp các tùy chọn "tốt" càng lớn, các nhánh "xấu" càng lớn mà không cần phân tích toàn diện. Tìm kiếm Minimax được thực hiện sâu, vì vậy bất cứ lúc nào nó đủ để xem xét các nút dọc theo con đường duy nhất trong cây.

Ý tưởng chính của Alpha - Beta Clipping là tìm khóa học không nhất thiết là tốt nhất, nhưng "đủ tốt" để đưa ra quyết định đúng đắn.

Tại đầu vào của thuật toán này, các tham số alpha và beta này được phục vụ, chúng được gọi là cửa sổ bị vỡ. Các tham số này chịu trách nhiệm cho các ranh giới cắt ở cấp độ đầu tiên, khi sâu vào cây trò chơi, các tham số này thay đổi. Thuật toán Alpha-beta với các tham số Alpha \u003d + Infinity và Beta \u003d Infinity (Lực lượng vũ phu với toàn cửa sổ) cho kết quả giống hệt như thuật toán Negamax, đó là, hoàn toàn ngực. Hình 7 cho thấy sơ đồ chặn thuật toán alpha-beta để đếm ước tính vị trí trong độ sâu.

Hình 7 - Lưu đồ alpha-beta để tìm kiếm một đánh giá về độ sâu

3.1.1 Thí dụtiêu chuẩncắt

Hình 8 - Ví dụ về việc cắt tiêu chuẩn

Hãy xem xét một ví dụ về cắt giảm tiêu chuẩn alpha beta. Ở các vị trí, chúng tôi chọn di chuyển, do đó, chúng tôi chọn giá trị lớn nhất từ \u200b\u200bcác vị trí trong và C. Giá trị đã được tính toán - đây là 10. Khi tính toán vị trí này, một trong các nút có giá trị 5 . Ở vị trí với động thái, đối thủ của chúng tôi sẽ làm, và do đó chọn giá trị nhỏ nhất. Từ điều này, nó theo giá trị của vị trí C sẽ là từ 5 trở xuống, do đó chúng tôi luôn chọn trong tùy chọn. Do đó, việc tính toán phần còn lại của các nút với chúng tôi không tiến hành.

3 .1.2 Thí dụin-Depth.cắt

Hình 9 - Ví dụ về clip chuyên sâu

Xem xét một ví dụ về một đoạn cắt sâu. Ở các vị trí, chúng tôi sẽ chọn giữa các chuyến đi vào vị trí trong và C. Giá trị B \u003d 15. Chúng tôi bắt đầu tính toán C. Ở vị trí E, một trong những nút đã đưa ra giá trị 5. Ở vị trí E, sự lựa chọn của Stroke thuộc về đối thủ, có nghĩa là giá trị cuối cùng của E sẽ là từ 5 và thấp hơn. Nếu giá trị c bằng e, thì chúng ta sẽ chọn tùy chọn trong, vì nó hấp dẫn hơn. Do đó, chúng tôi không nhất thiết phải biết giá trị chính xác của vị trí E, vì vậy tất cả các nhánh khác bị cắt khỏi nó.

3 .2 Lặp đi lặp lạingâm mình.(Enerated.Sâu sắc.)

Ý nghĩa của việc thoát khỏi ống xả hoặc phần lặp lặp đi lặp lại nằm trong một cuộc gọi định kỳ đến một quy trình độ sâu cố định với độ sâu tăng cho đến khi không vượt quá giới hạn thời gian hoặc độ sâu của tìm kiếm không đạt được. Ưu điểm của phương pháp này là bạn không nên chọn độ sâu của tìm kiếm trước; Ngoài ra, bạn luôn có thể sử dụng kết quả của tìm kiếm đã hoàn thành cuối cùng. Các giá trị được trả về từ mỗi tìm kiếm có thể được sử dụng để điều chỉnh cửa sổ tìm kiếm mong muốn.

Nói chung, clip alpha-beta được gây ra từ đỉnh của cây trong khoảng (- ?; +?). Tuy nhiên, sử dụng ngâm lặp, chúng ta có thể thay đổi nó.

Giả sử X - Giá trị của động thái tối ưu được tìm thấy trên lần lặp trước đó và số lượng Epsilon sẽ biểu thị sự khác biệt ước tính trong kết quả giữa tìm kiếm độ sâu D-1 và độ sâu của D. Tiếp theo, chúng tôi chỉ cần gọi Alpha -Beta Cắt từ trên cùng của cây với khoảng thời gian ước tính: Bảng chữ cái (D, X-Epsilon, X + Epsilon).

1. Giá trị trả về trong khoảng (x-epsilon, x + epsilon) là một giá trị chính xác, chúng ta có thể sử dụng nó.

2. Giá trị sẽ trở về trong khoảng thời gian (X-Epsilon, X + Epsilon), cần phải lặp lại tính toán với khoảng thời gian sửa đổi.

Ngay cả khi chúng tôi giả định rằng phương pháp Alpha-beta của sự cắt giảm sẽ không mang lại bất kỳ chiến thắng nào, sự gia tăng chung trong phân tích thời gian thực sự sẽ chứng minh là tương đối nhỏ. Thật vậy, giả định rằng số lượng tùy chọn trung bình ở mỗi cấp là D và số lượng mức phân tích là P, sau đó tìm kiếm lặp đến cấp độ đầu tiên, sau đó đến lần thứ hai, v.v. đến mức P, tương đương (không có clipping alpha-beta) Xem các vị trí D + + ... +.

Số tiền này bằng nhau, trong khi số lượng vị trí được xem trong phân tích thông thường là bằng nhau. Tỷ lệ giữa hai số này ở P lớn là giống nhau và do đó, gần với 1 trong trường hợp D là đủ lớn

Ngoài ra, khi sử dụng tìm kiếm lặp, bạn có thể nhập điều khiển thời gian, điều này sẽ cho phép máy tính bất cứ lúc nào cung cấp một giải pháp thỏa đáng. Do đó, nếu thời gian suy nghĩ được giới hạn trong 5 giây, ví dụ, nó sẽ xem xét tất cả các vị trí ở cấp 2, trong 0,001 giây, đến cấp 3 - trong 0,01 giây, đến cấp 4 - trong 1 giây, sau đó, sau Bắt đầu phân tích ở mức 5, nó sẽ bị buộc phải ngắt do thiếu thời gian. Tuy nhiên, đồng thời, máy tính sẽ có một giải pháp khá tốt được tìm thấy ở mức 4 cấp.

Do đó, máy tính có thể đưa ra câu trả lời tại thời điểm được chỉ định (ví dụ: để thực hiện 50 lần di chuyển trong 2 giờ). Rõ ràng là một chương trình hỗ trợ một phương pháp như vậy sẽ phát với các điểm mạnh khác nhau trên các máy tính khác nhau.

Mặc dù thực tế là một số nhánh cây sẽ phải kiểm tra nhiều lần phương pháp này cho một mức độ cắt đủ.

3.3 Phân loạidi chuyển.

Kết quả của sự cắt giảm alpha-beta rất bị ảnh hưởng theo thứ tự di chuyển được kiểm tra. Hãy xem xét điều này về các ví dụ:

Trong trường hợp đầu tiên, chúng tôi sẽ thực hiện phép tính sắp xếp các động tác "từ điều tồi tệ nhất để tốt hơn"

Hình 10 - Alpha-Beta cắt giảm di chuyển "từ điều tồi tệ nhất để tốt hơn"

Như có thể thấy từ ví dụ, không có nhánh cây nào bị cắt.

Bây giờ sắp xếp các di chuyển "từ tốt nhất cho điều tồi tệ nhất"

Hình 11 - Alpha-beta cắt giảm di chuyển "từ tốt nhất đến tệ nhất"

Theo các trường hợp tối ưu, lực lượng vũ phu từ Alpha-Beta Cut-Off nên được xem bởi W ^ ((D + 1) / 2) + W ^ (D / 2) - 1 Vị trí. Nó ít hơn nhiều so với Minimam.

Để tăng hiệu quả của Alpha-Beta Cắt, bạn cần nghĩ về những gì di chuyển nên được điều tra đầu tiên. Đối với những mục đích này, cái gọi là Killer Heuristic được sử dụng.

Ý tưởng là nếu động thái tốt ở một phần của cây, thì nếu có thể, nó đáng để cố gắng kiểm tra nó ở những người khác (ở cùng độ sâu). Để thực hiện việc này, một mảng được nhập vào đó một số động tác tốt nhất được nhập cho mỗi độ sâu, nếu có di chuyển từ bảng này ở vị trí cho độ sâu hiện tại - chúng được chọn trước.

Đối với các động thái khác, thuật toán thích di chuyển với Shaghas và mất.

3 .4 Trinh sát nega.(Negencut)

Negiscy - bổ trợ qua alpha beta. Đây là một thuật toán tìm kiếm được chỉ đạo để tính toán giá trị nút MINDAX.

Negency là thuật toán phổ biến nhất trong nỗ lực tổng thể hiện nay. Nó cực kỳ đơn giản và cho một số tăng tốc (tối đa 50%) mà không gây ra bất kỳ lỗi bổ sung nào trong phép tính. Nó kết hợp rất tốt với các thuộc tính hiện đại của các chương trình cờ vua - bảng băm.

Thuật toán này có một lợi thế là nó sẽ không bao giờ khám phá các nút có thể cắt bỏ alpha-beta, nhưng một số nhánh có thể được xem xét nhiều lần.

Thuật toán NegascOut kiểm tra nút đầu tiên với cửa sổ đầy đủ (Alpha, Beta), xem xét tùy chọn này là tốt nhất. Các nút sau đây đã cố gắng cắt đứt với một cửa sổ không, tức là. Cửa sổ (alpha, alpha + 1). Nếu kết quả tài khoản cải thiện alpha, thì điều này có nghĩa là 1 nút không phải là tốt nhất và nút này phải được kiểm tra với toàn cửa sổ, nhưng thay vì alpha, chúng ta có thể lấy giá trị (giá trị, beta). Mã của phương thức này là dưới đây:

public int Negison (Cell [,] COPLOBOARD, INT DEPTH, INT FIRSTDEPTH, INT Alpha, int beta, int possiblemove, bool ismy)

int giá trị \u003d 0, maxvalue \u003d -1000, leight \u003d 0;

Bảng [,] bo mạch \u003d ô mới;

Điểm [,] di chuyển \u003d điểm mới;

Điểm di chuyển \u003d điểm mới;

Findmove (di chuyển, refe teight, hội đồng quản trị, đúng, đúng);

Possiblemove \u003d leight;

Findmove (di chuyển, refeight, bảng, sai, đúng);

Possiblemove + \u003d leight;

if ((Depth \u003d\u003d FinalDepth) | | Gamisover (bảng, ISMY))

trả lại eval (bảng, possiblemove);

trả lại -1 * eval (bảng, sở hữu);

Findmove (di chuyển, refeight, bảng, haverequiredmove (bảng, ismy), ismy);

int a \u003d alpha, b \u003d beta;

cho (int i \u003d 0; i< leight; i++)

Copymove (di chuyển, di chuyển, i);

Domove (bảng, di chuyển);

Giá trị \u003d -1 * Negencout (bảng, độ sâu + 1, FinalDepth, -1 * B, -1 * a, possiblemove, ismy);

if (giá trị\u003e a && giá trị 0 && (độ sâu

a \u003d -1 * Negency (bảng, độ sâu + 1, FinalDepth, -1 * beta, -1 * giá trị, possiblemove, ismy);

if (giá trị\u003e a)

Copypose (bảng, ván sao chép);

Như có thể thấy từ mô tả ở trên cho Hướng đạo âm, việc vượt qua các di chuyển là một chức năng quan trọng. Nếu bạn sắp xếp tất cả các di chuyển "từ điều tồi tệ nhất đối với", thì bức tượng bán thân có thể mất nhiều thời gian hơn so với Minimax.

3 .5 Bảng băm

3 .5 .1 Học thuyết

Trong Cờ vua trong quá trình tìm kiếm, hóa ra không phải là một cây của trò chơi, nhưng biểu đồ rất thường xuyên sau khi di chuyển của các động thái chúng ta có được vị trí tương tự. Phương pháp sử dụng bảng băm là giữ đánh giá các vị trí đã được xem xét. Đối với mỗi vị trí, cần phải lưu trữ đánh giá của nó (chính xác hơn, sự đánh giá cao dưới vị trí này), độ sâu của sự nhộn nhịp, di chuyển tốt nhất. Bây giờ, bắt đầu tháo rời vị trí, bạn phải nhìn - và chúng ta đã không gặp nó chưa? Nếu bạn không gặp nhau, thì chúng tôi làm điều đó như trước đây. Nếu chúng ta gặp nhau, chúng ta nhìn vào chiều sâu nào chúng ta đã tháo rời trước đây. Nếu giống như chúng ta cần, hoặc sâu hơn, bạn có thể sử dụng ước tính cũ và tiết kiệm thời gian. Nếu ít hơn, thì chúng ta vẫn có thể sử dụng một phần thông tin, cụ thể là động thái tốt nhất.

Di chuyển tốt nhất cho độ sâu n có thể là tốt nhất và cho độ sâu n + 1. Đó là, bên cạnh đích ban đầu của nó, bảng băm hóa ra là hữu ích để di chuyển tinh giản. Nó vẫn bất ngờ giúp giải tỏa lặp lại - khi chúng ta bắt đầu lặp lại tiếp theo, bảng băm hóa ra là điền thông tin từ cái trước đó, và đến một thời gian nào đó (thành sâu 1), tất cả các vị trí chỉ cần có trong đó, với cách tốt nhất đến độ sâu của N-1.

Một chương trình sử dụng hốc lặp và bảng băm thường thực hiện tất cả các lần lặp từ 1 đến n nhanh hơn nhiều lần so với nếu nó bắt đầu lặp lại n, bởi vì Với xác suất 75%, nó luôn là người đầu tiên chọn khóa học tốt nhất và với xác suất ~ 90% động thái tốt nhất là trong số ba người đầu tiên được xem xét.

3 . 5 .2 Bán hàng

Băm là một trong những cách mạnh nhất để tăng hiệu suất máy tính. Sử dụng bảng băm là công cụ chính trong các trò chơi cờ vua lập trình.

Bảng băm - đại diện cho một bảng được lập chỉ mục lớn, trong các ô trong đó các thông tin sau được lưu trữ:

· Chỉ số 2 Hesh

· Độ sâu của tính toán sai sự cho động thái này

· Đánh giá về động thái này

Việc lựa chọn thuật toán nhà ở chỉ số nhà ở là một điểm thiết yếu khi sử dụng các thuật toán băm. Khi chọn thuật toán để tính chỉ số băm, cần phải tính đến 2 điểm quan trọng nhất:

Chỉ số phải phản ánh hầu hết các thông tin tiến độ duy nhất để giảm thiểu số lượng va chạm.

Chỉ số Heshe phải đơn giản để đếm

Một thuật toán phức tạp mang lại những chỉ số tốt nhất về số lượng va chạm, nhưng chúng rất khó tính toán sai, và do đó mất rất nhiều thời gian của bộ xử lý. Nó là cần thiết để xây dựng một thuật toán, dễ đếm, nhưng có số lượng va chạm tối thiểu.

Để tính chỉ số, hoạt động với một số mặt nạ được tạo ngẫu nhiên đã được chọn.

Ban đầu, mặt nạ băm được lấp đầy với các số ngẫu nhiên. Đối với mỗi vị trí, chỉ số 2 HESH được tính toán, lần đầu tiên được sử dụng để tìm kiếm vị trí trong bảng băm, thứ hai để kiểm tra các va chạm.

Trước bất kỳ việc sử dụng thông tin nào từ bảng băm, sự trùng hợp của chỉ số băm thứ hai sẽ được kiểm tra xem chúng không trùng nhau, sau đó va chạm xảy ra và thông tin bị bỏ qua.

Cập nhật thông tin vị trí chỉ nên được thực hiện nếu độ sâu thiếu hiện tại lớn hơn so với các thông tin đã được lưu trữ trong bảng băm.

Thông tin từ Hesh, chỉ có thể tin tưởng nếu độ sâu nằm ở Haheus, nhiều hơn độ sâu Acclusion hiện tại.

3.6 Sử dụngthư việndebtov.

Thuật toán để sử dụng các thư viện đầu tiên là sử dụng cơ sở dữ liệu được tính toán sẵn với các bữa tiệc, kể từ khi bắt đầu Bên, số lượng lớn nhất có thể có các ước tính.

3 .7 Đánh giáchức vụ

Khi phát triển thuật toán đánh giá vị trí tĩnh (chức năng chất lượng), có sự không chắc chắn lựa chọn giữa chất lượng và tốc độ. Các chức năng ước tính định tính dựa trên cơ sở thống kê hoạt động chậm, nhưng cung cấp các ước tính rất chính xác, một số thậm chí không sử dụng tiền gửi thông minh.

Nhanh hơn nhiều, các chức năng đơn giản đang hoạt động, có tính đến các nguyên tắc đơn giản nhất của trò chơi, họ không đưa ra đánh giá chính xác, nhưng cho phép tìm kiếm sâu. Do đó, một điểm chính xác, nhưng chậm, có thể cung cấp cho ngu ngốc, nhưng nhanh chóng.

Chất lượng đánh giá được xác định bởi kiến \u200b\u200bthức về trò chơi trên cơ sở vị trí này được so sánh. Chất lượng đánh giá tỷ lệ thuận với tốc độ hoạt động và khối lượng kiến \u200b\u200bthức. Khi thực hành 40 năm để tạo các chương trình với các chương trình trí tuệ nhân tạo, khối lượng kiến \u200b\u200bthức về chức năng đánh giá tỷ lệ nghịch với tốc độ của nó.

Bằng đồ họa, sự phụ thuộc này được thể hiện trong hình dưới dạng một gia đình siêu bóng.

Hình 12 - Một ví dụ về clip chuyên sâu

Khi phát triển chức năng đánh giá cho cờ vua, cần lưu ý rằng trong đánh giá cờ vua của tất cả các thông số phụ thuộc vào giai đoạn của trò chơi.

Cân cờ được thực hiện để phân chia trên sân khấu: Ra mắt - Khai trương bữa tiệc, Mittelspil - giữa trò chơi, Endgame là giai đoạn cuối. Đối với thuật toán, người ta đã quyết định chia các bên thành 3 giai đoạn bởi số lượng số liệu còn lại trên bảng với máy tính. Ban đầu, trên bảng đen trên 16 con số tại người chơi. Bảng cho thấy sự phụ thuộc của giai đoạn của trò chơi từ số lượng số liệu còn lại:

Bảng 1 - Giai đoạn của trò chơi

3 . 7 .1 Vật chấtĐánh giá

Ưu điểm vật chất của một trong những người chơi được coi là tham số quan trọng nhất trong lý thuyết cờ vua, do đó đánh giá vật liệu làm cho tác động lớn nhất đến đánh giá tổng thể của vị trí. Đánh giá vật liệu được coi là tổng của các hệ số trọng lượng của tất cả các hình dạng trên bảng. Nhà vua không được bao gồm trong ước tính vật chất, như trong trường hợp mất mát của nhà vua, người chơi sẽ tự động thua. Đánh giá quy mô của các số liệu là nhiệm vụ chính trong việc xây dựng một chức năng đánh giá. Để xác định quy mô của các số liệu, nó đã được quyết định tận dụng một thuật toán tự học dựa trên thuật toán di truyền. Trọng lượng của các số liệu không phụ thuộc vào giai đoạn của trò chơi. Thuật toán di truyền là một thuật toán tìm kiếm heuristic được sử dụng để giải quyết các vấn đề tối ưu hóa và mô phỏng bằng cách lựa chọn ngẫu nhiên, kết hợp và biến thể của các thông số mong muốn bằng các cơ chế giống như tiến hóa sinh học được đề xuất đầu tiên bởi Holland (1975).

3 . 7 . 2 Sự miêu tảcông việcdi truyền.thuật toán

Nhiệm vụ ban đầu được mã hóa theo cách mà giải pháp của nó có thể được biểu diễn dưới dạng vectơ ("nhiễm sắc thể"). Ngẫu nhiên tạo ra một số vectơ ban đầu ("dân số ban đầu"). Chúng được đánh giá bằng cách sử dụng "chức năng khả năng thích ứng", do đó, mỗi vectơ được gán một giá trị nhất định ("thể dục"), xác định xác suất tồn tại của cơ thể được biểu thị bằng vectơ này.

Sau đó, sử dụng các giá trị thu được của tập thể dục, vectơ (lựa chọn), được phép "nỏ", được chọn. "Các toán tử di truyền" (thường là "băng qua" và "đột biến") được áp dụng cho các vectơ này), do đó tạo ra "thế hệ" sau đây. Các cá nhân thế hệ tiếp theo cũng được đánh giá, sau đó lựa chọn được thực hiện, các nhà khai thác di truyền được sử dụng, v.v.

Đây là cách mô phỏng "quá trình tiến hóa", tiếp tục nhiều chu kỳ cuộc sống (thế hệ) cho đến khi tiêu chí dừng thuật toán được thực hiện. Một tiêu chí như vậy có thể là:

Tìm giải pháp tối ưu;

Kiệt hứng số lượng thế hệ được phát hành trên Evolution;

Kiệt sức thời gian phát hành để tiến hóa.

Các thuật toán di truyền phục vụ chủ yếu để tìm các giải pháp trong không gian tìm kiếm phức tạp, rất phức tạp.

Do đó, có thể làm việc thuật toán di truyền trong sơ đồ sau:

Hình 13 - Ví dụ về clip chuyên sâu

3 . 7 . 3 Giai đoạncông việcdi truyền.thuật toán

Việc tạo ra một dân số ban đầu - một dân số ban đầu được tạo ngẫu nhiên; Ngay cả khi nó hóa ra là hoàn toàn không cạnh tranh, thuật toán di truyền vẫn sẽ nhanh chóng dịch nó thành một dân số khả thi. Do đó, trong bước đầu tiên, bạn đặc biệt có thể cố gắng thực hiện các cá nhân quá được trang bị, đủ để phù hợp với định dạng của dân số.

Lựa chọn (lựa chọn) - Từ toàn bộ dân số được chọn một tỷ lệ nhất định sẽ vẫn còn "còn sống" ở giai đoạn tiến hóa này. Băng qua (sao chép) - để tạo ra một hậu duệ, bạn cần một số cha mẹ; Thông thường, tất nhiên, chúng ta cần chính xác hai. Việc sao chép trong các thuật toán khác nhau được xác định theo các cách khác nhau - tất nhiên, tất nhiên, phụ thuộc vào trình bày dữ liệu. Yêu cầu chính để sinh sản là hậu duệ hoặc hậu duệ có cơ hội thừa hưởng các tính năng của cả cha mẹ, "trộn" chúng theo bất kỳ cách nào khá hợp lý.

Đột biến là một sự thay đổi ngẫu nhiên trong một phần của các cá nhân (nhiễm sắc thể).

3 . 7 . 4 Định nghĩacân nặnghìnhtừcứu giúpdi truyền.thuật toán

Nhiễm sắc thể của thuật toán di truyền bao gồm trọng lượng của các nhân vật cờ vua, ngoại trừ nhà vua.

Để đặt dân số ban đầu, giá trị nhiễm sắc thể được đặt ngẫu nhiên trong khoảng thời gian, ngoại trừ cầm đồ và trọng lượng nữ hoàng, các giá trị của quy mô của chúng là cố định, cầm đồ - 100, Queen - 1000.

Để lựa chọn, lựa chọn giải đấu được sử dụng. Có 2 nhiễm sắc thể ngẫu nhiên giữa chúng, tối đa bốn chiến thắng, lần đầu tiên đi. Người chiến thắng của cuộc đấu tay đôi vẫn còn, kẻ thua cuộc được loại bỏ khỏi dân số.

Khi băng qua, một phương thức chéo một điểm được sử dụng.

Phải mất ngẫu nhiên 2 cha mẹ, số lượng nhiễm sắc thể được chọn một cách tình cờ, sơ đồ được hiển thị trong Hình 14. Do đó, mỗi hậu duệ sẽ có cả hai từ cha mẹ thứ nhất và từ cha mẹ thứ hai.

Hình 14 - Một ví dụ về clip chuyên sâu

Đột biến được thực hiện như sau: Chọn với một số xác suất nhiễm sắc thể, và chúng, mỗi "gen" thay đổi bằng một số ngẫu nhiên trong phạm vi [-50; 50], ngoại trừ giá trị của các đánh giá tĩnh của nữ hoàng và những con tốt.

Đối với các giá trị cuối cùng, các trọng số thu được được chia cho 100.

3 . 7 . 5 Toàn bộĐánh giá

Khi đánh giá vị trí thu hút sự chú ý đến 8 thành phần:

1. Lực lượng vật chất của các đối thủ

2. Số lượng lĩnh vực trong trận chiến

3. Các lĩnh vực chính

4. Quần qua

5. cầm đồ kép

6. Rocking.

7. Khuyến mãi cầm đồ

8. Chó săn [* 1]

Số lượng lĩnh vực trong trận chiến được tính toán ở độ sâu của gỗ 2, theo quan điểm về một chi phí sản xuất lớn. Đối với mỗi trường đánh bại con số của máy tính để ước tính vị trí được thêm 1 điểm, đối với các trường chống lại số liệu của người chơi bị loại bỏ theo điểm. Giá trị kết quả được truyền đến dưới cùng của cây như một tham số. Ngoài ra tại một độ sâu 2, điểm tính toán cho chuỗi hải quân, đi qua và cầm đồ kép. Đối với sự hiện diện của những con tốt bên trái hoặc bên phải, bên nhận được 1 điểm. Người cầm đồ được coi là một lối đi, nếu trên dọc, cũng như trên bờ lân cận với cô, không có những con tốt đối thủ nào có thể ngăn cô ta vượt qua kết thúc. Những con tốt kép - 2 con tốt của một màu đứng trên một dọc. Với sự hiện diện của những con tốt kép, 4 điểm được loại bỏ, 5 điểm được thêm vào cho sự hiện diện của mỗi con tốt. Cờ vua có các cánh đồng chính:

Hình 15 - Các trường chính

Đối với việc chiếm đóng của mỗi người trong số họ là thêm 4 điểm.

Bởi vì Sau khi nhà vua được thực hiện, nhà vua đang ở một vị trí rất bền vững, bên này nhận được 3 điểm để đúc hoàn hảo.

Cố gắng hơn để cầm đồ đến ngang cuối cùng, càng gần càng hơn với sự biến đổi. Đối với mỗi ô đi đến giá trị của cầm đồ được thêm vào 1.

Sau khi tính số điểm cho cả hai bên, ước tính cuối cùng của vị trí thu được, bằng cách trừ các điểm người chơi từ kính của đối thủ máy tính.

4 . Phát triểnchương trìnhs

4 .1 Yêu cầuđếncờ vuathuật toán

Trong quá trình phát triển mô hình của một mô-đun phần mềm để chơi cờ, nên tính đến các tham số sau:

* Thuật toán cờ vua rất đòi hỏi hiệu suất và sức mạnh của chương trình của chương trình trực tiếp phụ thuộc vào hiệu suất của chương trình

* Các mô-đun phần mềm phải dễ dàng để phát triển và kiểm tra

* Giao diện người dùng phải dễ dàng, dễ dàng tùy chỉnh và có khả năng mở rộng

4 .2 Lượt xemcờ vuathuật toán

Hầu hết các chương trình hiện đại có thể được chia thành 3 loại:

* Danh mục người tìm kiếm nhanh là ý tưởng là, đơn giản hóa giới hạn của chức năng đánh giá và triệt để tối ưu hóa toàn bộ chương trình (thường đạt được bằng cách viết chương trình trên trình biên dịch), bạn có thể mang theo Số lượng vị trí được xem xét bởi chương trình (NPS - nút mỗi giây) vào một số thiên văn học, ví dụ, lên tới 150-200k NPS trên P / 200. Đó là, chương trình dành khoảng một hoặc hai nghìn lệnh máy cho mỗi vị trí. Số này bao gồm tiến trình của vị trí trước đó trong việc này, ước tính vị trí, việc tạo ra các di chuyển từ vị trí này, logic quản lý, v.v. Nói chung, tính năng ước tính vẫn còn ở tất cả các mảnh vụn - khoảng hàng trăm đội. Các chương trình được thực hiện cực kỳ nhanh chóng và hoàn hảo hành xử trong các vị trí chiến thuật phức tạp, và cũng giải quyết hoàn hảo các nhiệm vụ kết hợp, nhưng có một trò chơi vị trí yếu

* Danh mục thứ hai là một chương trình dựa trên kiến \u200b\u200bthức. Ở đây tất cả các lực bị ném vào để viết một chức năng định giá phức tạp. Sự tương tác của các số liệu với nhau, và trang bìa của nhà vua, và sự kiểm soát của các vị trí và gần như một giai đoạn của mặt trăng gần như. Về NPS, chương trình hoạt động chậm hơn 10 - 100 lần so với các tìm kiếm nhanh, nhưng chơi cờ định vị tốt. Chính xác hơn, những chiếc cờ này là tốt, chỉ khi có chiến thuật sâu trên bảng, hoặc thời gian kiểm soát là chương trình có đủ thời gian để tính toán chiến thuật này.

4 .3 Điều khiểncủa thời giantrongcờ vuathuật toán

Tham số quan trọng nhất trong việc xây dựng trí tuệ nhân tạo của một đối thủ cờ vua là kiểm soát thời gian đột quỵ. Hệ thống của trò chơi của chương trình cờ vua phụ thuộc vào kiểm soát thời gian. Trước khi "suy nghĩ" bằng máy tính, thời gian có sẵn cho máy tính phải được tính toán.

Khi tính thời gian có sẵn trên khóa học, cần phải tiến hành từ hai tham số:

* Thuật toán để tìm kiếm rẽ tốt hơn là được xây dựng trên nút đeo của tất cả các động tác có thể có trên một số độ sâu, và do đó, trực tiếp phụ thuộc vào thời gian dành cho bức tượng bán thân. Chúng ta càng sử dụng nhiều thời gian, máy tính mạnh hơn đang chơi

* Thời gian chờ đợi phản hồi của đối thủ máy tính không nên quá lớn. Làm cơ sở, bạn có thể thực hiện các quy định quốc tế về cờ vua, trong đó có một số loại tiệc: blitz - 15 phút mỗi bên, nhanh - 60 phút mỗi đợt, cổ điển - hơn 60 phút cho bữa tiệc.

Dựa trên các thông số bắt buộc, người ta đã quyết định tính toán thời gian có sẵn để di chuyển trước công thức sau: Trường hợp: Thời gian - thời gian trong khóa học; Full_game_time - Tổng thời gian tiệc; AVG_MOVES - Số đột quỵ trung bình của người chơi trong bữa tiệc; Sưu tầm_Time - thời gian tích lũy bổ sung; D - Giảm nhẹ thời gian cần thiết để tính toán bổ sung. Tổng thời gian của bữa tiệc và số lượng người chơi trung bình di chuyển trong bữa tiệc là hai thông số bên ngoài chính, thay đổi mà bạn có thể thay đổi sức mạnh của trò chơi. Theo thống kê của Cổng thông tin cờ vua thechess.ru, số lượng người chơi trung bình cho bữa tiệc bằng 30, do đó, người ta đã quyết định lấy số lượng động tác người chơi trung bình trong bữa tiệc bằng 30. Do đó, từ bên ngoài tổng thời gian của bữa tiệc được thiết lập. Khi phát triển thuật toán cho hành vi của đối thủ máy tính (trí tuệ nhân tạo), các thuật toán sau đã được sử dụng:

* Thuật toán tìm kiếm lặp đi lặp lại, với điều khiển thời gian

* Thuật toán Alpha-beta Clipping và Nega-Scout

* Thư viện Debutov.

* BẢNG BẢNG

* Để sắp xếp các động thái, các heuristic của kẻ giết người và lịch sử đã được sử dụng.

4 .4 Đã phát triểnchương trình

Trong chương trình trong ngôn ngữ lập trình, tất cả các thuật toán và bổ sung ở trên đã được thực hiện.

Ảnh chụp màn hình của chương trình được hiển thị dưới đây:

Hình 16- Lựa chọn màu

Hình 17 - Ảnh chụp màn hình của chương trình

Hình 18 - Ảnh chụp màn hình của chương trình

Khi bạn di chuột về hình dạng màu của bạn, nó được tô màu trắng. Khi chọn một hình cho nét, màu trường của nó trở thành màu cam và tất cả các ô mà hình có thể đi, nổi bật bởi màu trắng. Khi bạn di chuột trên một tế bào như vậy, màu sắc của nó cũng trở thành màu cam.

Trong trò chơi, các di chuyển hoàn hảo được hiển thị trong máy tính bảng ở bên trái, người chơi có thể lưu câu chuyện trong một tệp riêng biệt.

4 .5 Căn cứđi xe đạptìm kiếmtốt hơnĐột quỵ

Nhiệm vụ chính của chu trình tìm kiếm cơ bản của đột quỵ tốt nhất là tìm và thực hiện cách tốt nhất để đối thủ máy tính. Chu kỳ sử dụng thư viện đầu tiên và tìm kiếm lặp với kiểm soát thời gian. Hình 12 cho thấy quá trình tìm kiếm một cách tốt hơn:

Hình 19 - Chu kỳ tìm kiếm cơ bản của khóa học tốt nhất

4 .6 Tìm kiếmtốt hơnĐột quỵĐầu tiêncấp độ

Nhiệm vụ chính của thuật toán làm việc để tìm kiếm chuyển động tốt nhất của cấp độ đầu tiên (đáp ứng của kẻ thù) là tìm động thái tốt nhất của đối thủ ở cấp độ đầu tiên. Thuật toán được xây dựng trên thuật toán Negencout bằng cách sử dụng ước tính sâu, để xác định ước tính của đột quỵ hiện tại. Hình 13 cho thấy công việc của thuật toán:

Hình 20 - Tìm kiếm cấp độ đầu tiên tốt hơn

4 .7 Phát hiệnchiều sâuƯớc tính.Đột quỵ

Nhiệm vụ chính của việc tìm đánh giá độ sâu là tìm đánh giá khóa học hiện tại bằng thuật toán NegascOut, heuristic về số 0, dữ liệu từ bảng có một bảng và đánh giá vị trí tĩnh. Hình 14 cho thấy quá trình đếm đánh giá của khóa học theo chiều sâu:

Hình 21 - Tìm đánh giá đột quỵ sâu

4.8 Khácmô hìnhĐồ thị

Mô hình toán học của chương trình như sau:

Hình 22 - Mô hình toán học

Từ hình lớp trừu tượng, 7 loại người thừa kế, mô tả các hành động và tính chất của các số liệu được thảo luận. Ngoài ra còn có một lớp trống, biểu thị rằng tế bào trống. Bảng là một mảng gồm 64 yếu tố của hình, mỗi phần có thể trở thành bất kỳ lớp học thừa kế nào. Khóa học trong máy tính được thể hiện dưới dạng 4 chữ số - tọa độ (từ 1 đến 8) điểm bắt đầu và tọa độ cuối của kết thúc. Dưới đây là sơ đồ trạng thái cho chương trình:

Hình 23 - Biểu đồ điều kiện

5 . Thực nghiệmĐánh giáchất lượngỞ realiz.anno.thuật toán

Các thuật toán được triển khai đã phải tuân theo phân tích so sánh để xác định tối ưu về tốc độ và chất lượng của cấu hình. Trong thí nghiệm, một số giải đấu đã được tổ chức giữa mỗi cặp các triển khai khác nhau.

5 .1 Đánh giácông việcAlpha beta.cắt

Với thí nghiệm này, cần phải tìm hiểu xem hệ số phân nhánh đã giảm đi, và do cải thiện tốc độ của thuật toán, mà không làm mất chất lượng của quyết định về khóa học được ủy nhiệm.

Để đánh giá chất lượng của thuật toán cuối cùng, thuật toán tìm kiếm này đã được thực nghiệm so với nguyên tắc Minimax.

Các bảng trình bày các hệ số trình bày xếp hạng của số lượng vật phẩm cho các thuật toán, cũng như tỷ lệ thời gian được gán cho việc xem này.

Bảng 1 - So sánh các chỉ số của thuật toán của thuật toán của thuật toán của phần cắt với thuật toán MINIMAX.

Kết quả của các thí nghiệm cho thấy clipping alpha-beta tốt hơn nhiều so với một tìm kiếm minimax đơn giản.

5 .2 Đánh giácông việclặp đi lặp lạilặnphân loạidi chuyển.

Để đánh giá chất lượng của thuật toán, thuật toán tìm kiếm này từ Alfa-beta Cut-off và đơn giản là Alpha-beta Cut-off được so sánh bằng thực nghiệm.

Tài liệu tương tự

    Mô tả các quy tắc của trò chơi "trận chiến biển". Các tính năng của máy tính hiện đại và trí tuệ nhân tạo. Tạo một sơ đồ khối chung của chương trình, sự xuất hiện của nó. Các biến, thủ tục và chức năng cần thiết. Đặc điểm của các đối tượng được sử dụng trong ứng dụng.

    khóa học, thêm 05.11.2012

    Phát triển dựa trên cách tiếp cận "điểm" trò chơi để lập trình "trí tuệ nhân tạo" tại các trò chơi vị trí và khả năng áp dụng phương pháp này để giải quyết các vấn đề trong lĩnh vực kinh tế, quản lý và các khu vực khoa học khác. Mô hình của tình hình chơi game.

    luận văn, thêm vào ngày 21/07/2013

    Sơ đồ cấu trúc của mô-đun phần mềm. Phát triển mô-đun phần mềm và sơ đồ giao diện người dùng. Thực hiện mô-đun chương trình: Mã chương trình; Mô tả về các toán tử và chức năng sử dụng. Xem một hình thức tùy chỉnh với một ma trận đầy.

    khóa học làm việc, thêm 01.09.2010

    Nghiên cứu các quy tắc chung của trò chơi trong Trình kiểm tra, hướng dẫn sử dụng và lập trình viên. Các đặc điểm của các thuật toán chính thực hiện các nhiệm vụ lớp Widget Life. Đánh giá các di chuyển của máy tính và người đàn ông. Xây dựng cây tìm kiếm cây dựa trên đánh giá các chức năng.

    kiểm tra, thêm vào 12/20/2012

    Các giai đoạn chính của sự phát triển, nguyên tắc thử nghiệm và gỡ lỗi của mô-đun phần mềm VFS. Các tính năng thiết kế trong UML. Phương pháp "Sức mạnh thô" và ứng dụng của chúng khi gỡ lỗi chương trình. Các yếu tố có hại có mặt tại nơi làm việc của lập trình viên.

    luận văn, thêm vào 03/07/2012

    Phân tích các mô hình và phương pháp để thực hiện các trò chơi thông minh trong hệ thống của một người robot. Môi trường phát triển khiêu vũ. Thuật toán của mô-đun nhận dạng, xử lý dữ liệu, chức năng mô-đun trò chơi. Kiểm tra gói phần mềm, sửa và năng lượng.

    luận văn, thêm vào 12/2016

    Bản chất và vấn đề xác định trí tuệ nhân tạo, nhiệm vụ và chức năng chính của nó. Các vấn đề triết học của việc tạo ra trí tuệ nhân tạo và đảm bảo an toàn cho con người khi làm việc với robot. Chọn một cách để tạo ra trí tuệ nhân tạo.

    kiểm tra, thêm 07.12.2009

    Chương trình trò chơi "Checkers" cho trò chơi giữa người đàn ông và máy tính. Phát triển các thuật toán, phát triển lịch sử của các nhiệm vụ. Cách tiếp cận khác nhau để xây dựng hệ thống. Viết tắt liệt kê các chương trình và mô tả của thuật toán. Thành phần của trí tuệ nhân tạo.

    khóa học làm việc, thêm 03/26/2009

    Xây dựng và phân tích mô hình toán học của trò chơi. Xác định xác suất phát hiện tàu với tất cả các vị trí có thể và các hệ thống tìm kiếm khác nhau. Phát triển các thuật toán cho trí tuệ nhân tạo. Cấu trúc của chương trình và các thành phần của nó.

    khóa học, thêm vào ngày 22/12/2012

    Khái niệm về trí tuệ nhân tạo là tính chất của các hệ thống tự động để đảm nhận các chức năng riêng lẻ của trí thông minh của con người. Hệ thống chuyên gia trong lĩnh vực y học. Các cách tiếp cận khác nhau để xây dựng hệ thống trí tuệ nhân tạo. Tạo mạng lưới thần kinh.

Hãy xem xét một số khái niệm cơ bản sẽ giúp chúng tôi tạo ra một trí thông minh nhân tạo đơn giản có thể chơi cờ:

  • di chuyển;
  • đánh giá bàn cờ;
  • minimax;
  • clip alpha-beta.

Ở mỗi bước, chúng tôi sẽ cải thiện thuật toán của chúng tôi bằng một trong những phương pháp lập trình được kiểm tra này. Bạn sẽ thấy mỗi người trong số họ ảnh hưởng đến phong cách của trò chơi thuật toán.

Thuật toán đã hoàn thành có thể được tìm thấy trên GitHub.

Bước 1. Tạo di chuyển và trực quan hóa của một bàn cờ

Chúng tôi sẽ sử dụng các thư viện Chess.js để tạo ra các di chuyển và bàn cờ.js để hình dung bảng. Thư viện để tạo di chuyển đang thực hiện tất cả các quy tắc của cờ vua. Dựa trên điều này, chúng ta có thể tính toán tất cả các động thái cho trạng thái này của Hội đồng quản trị.

Trực quan hóa chức năng tạo hàm. Vị trí ban đầu được sử dụng như một lối vào và ở đầu ra - tất cả các động tác có thể từ vị trí này.

Việc sử dụng các thư viện này sẽ giúp chúng tôi chỉ tập trung vào nhiệm vụ thú vị nhất - tạo một thuật toán tìm thấy khóa học tốt nhất. Chúng tôi sẽ bắt đầu viết một hàm trả về một khóa học ngẫu nhiên từ tất cả các di chuyển có thể:

Var calcodebestmestme \u003d Chức năng (trò chơi) (// tạo tất cả các động tác cho vị trí này var newgamemove \u003d game.ugly_moves (); trả lại newgamemove;);

Mặc dù thuật toán này không phải là một cầu thủ cờ rất vững chắc, nhưng đây là một điểm khởi đầu tốt, bởi vì mức độ của nó là đủ để chơi với chúng tôi:

Đen Chơi theo di chuyển ngẫu nhiên

Jsfiddle.

Bước 2. Bảng điểm

Bây giờ hãy cố gắng hiểu loại nào mạnh hơn ở một vị trí nhất định. Cách dễ nhất để đạt được điều này là tính toán các điểm mạnh tương đối của các số liệu trên bảng bằng bảng sau:

Sử dụng chức năng đánh giá, chúng ta có thể tạo một thuật toán chọn đánh giá cao nhất:

Var calcodebestmestme \u003d Chức năng (trò chơi) (var newgamemove \u003d game.ugly_move (); var bestmove \u003d null; // sử dụng bất kỳ số âm nào var bedvalue \u003d -9999; cho (var i \u003d 0; i< newGameMoves.length; i++) { var newGameMove = newGameMoves[i]; game.ugly_move(newGameMove); //Возьмите отрицательное число, поскольку ИИ играет черными var boardValue = -evaluateBoard(game.board()) game.undo(); if (boardValue > BestValue) (BESTVALUE \u003d BoardValue; BESTMOVE \u003d newGamemove)) Trả lại BestMove; );

Sự cải thiện hữu hình duy nhất là bây giờ thuật toán của chúng tôi sẽ ăn một con số, nếu có thể:

Chơi màu đen bằng cách sử dụng chức năng đánh giá đơn giản

Xem những gì đã xảy ra ở giai đoạn này, bạn có thể ở JSFiddle.

Bước 3. Tìm kiếm cây và minimam

Sau đó, chúng ta sẽ tạo một cây tìm kiếm mà từ đó thuật toán có thể chọn khóa học tốt nhất. Điều này được thực hiện bằng cách sử dụng thuật toán "Minimax".

Xấp xỉ Phiên dịch Trong một trong những bài viết của chúng tôi, chúng tôi đã xử lý - học cách tạo AI, không thể đánh bại trong Noliki Cross.

Trong thuật toán này, cây đệ quy của tất cả các động tác có thể được điều tra đến độ sâu nhất định, và vị trí được ước tính ở "lá" của cây.

Sau đó, chúng tôi trả về giá trị nhỏ nhất hoặc hậu duệ nhất trong nút cha, tùy thuộc vào liệu khóa học có được tính không (nghĩa là chúng tôi cố gắng giảm thiểu hoặc tối đa hóa kết quả ở mỗi cấp độ).

Hình dung minimax ở vị trí nhân tạo. Đột quỵ tốt nhất cho màu trắng - B2-C3, vì vậy chúng tôi có thể đảm bảo rằng chúng tôi sẽ đến vị trí ước tính bằng -50

Var minimax \u003d Chức năng (độ sâu, trò chơi, ismaximisingplayer) (if (depth \u003d\u003d\u003d 0) (trả về -ValautoBoard (game.board ());) var newgamemove \u003d game.ugly_move (); if (ismaximisesplayer) (var bestmove \u003d -9999; cho (var i \u003d 0; i< newGameMoves.length; i++) { game.ugly_move(newGameMoves[i]); bestMove = Math.max(bestMove, minimax(depth - 1, game, !isMaximisingPlayer)); game.undo(); } return bestMove; } else { var bestMove = 9999; for (var i = 0; i < newGameMoves.length; i++) { game.ugly_move(newGameMoves[i]); bestMove = Math.min(bestMove, minimax(depth - 1, game, !isMaximisingPlayer)); game.undo(); } return bestMove; } };

Với Minimax, thuật toán của chúng tôi bắt đầu hiểu các chiến thuật chính của cờ vua:

Minimax với mức độ sâu 2

Xem những gì đã xảy ra ở giai đoạn này, bạn có thể ở JSFiddle.

Hiệu quả Minimax phần lớn phụ thuộc vào độ sâu tìm kiếm có thể đạt được. Đó là những gì chúng ta sẽ được cải thiện trong bước tiếp theo.

Bước 4. Clip Alpha Beta

Các vị trí mà chúng tôi không cần nếu một clip alpha beta được sử dụng. Cây được ghé thăm theo thứ tự được mô tả.

Với Alpha Beta-Clipping, chúng tôi sẽ có một sự cải thiện đáng kể về MinimAX, như thể hiện trong ví dụ sau:

Số lượng vị trí cần được ước tính trong trường hợp tìm kiếm với độ sâu 4 và vị trí ban đầu được hiển thị trong hình.

Xem những gì đã xảy ra ở giai đoạn này, bạn có thể ở JSFiddle.

Bước 5. Cải thiện chức năng đánh giá

Chức năng đánh giá ban đầu khá ngây thơ, vì chúng ta chỉ đơn giản là đếm các điểm của các số liệu trên bảng. Để cải thiện nó, chúng ta sẽ bắt đầu xem xét vị trí của các số liệu. Ví dụ, một con ngựa ở trung tâm của bảng "đắt hơn", bởi vì nó có nhiều động tác dễ tiếp cận hơn và do đó, hoạt động nhiều hơn con ngựa trên rìa của bảng.