1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài toán qua sôngtrí tuệ nhân tạo

34 37 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 345,13 KB

Cấu trúc

  • HÀ NỘI - 20< hai số cuối của năm bảo vệ KLTN>

  • HÀ NỘI - 20< hai số cuối của năm bảo vệ KLTN>

  • HÀ NỘI - 20< hai số cuối của năm bảo vệ KLTN>

  • HÀ NỘI - 20< hai số cuối của năm bảo vệ KLTN>

  • HÀ NỘI - 20< hai số cuối của năm bảo vệ KLTN>

  • HÀ NỘI - 20< hai số cuối của năm bảo vệ KLTN>

  • HÀ NỘI - 20< hai số cuối của năm bảo vệ KLTN>

  • HÀ NỘI - 20< hai số cuối của năm bảo vệ KLTN>

  • LỜI MỞ ĐẦU

  • CHƯƠNG 1: TÌM HIỂU VỀ TRÍ TUỆ NHÂN TẠO

    • I. TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO

      • 1. Mở đầu

      • 2. Tri thức

      • 3. Biểu diễn tri thức

    • II. CÁC PHƯƠNG PHÁP BIỂU DIỄN TRI THỨC TRÊN MÁY TÍNH

      • 1. Logic mệnh đề

      • 2. Logic vị từ

      • 3. Biểu diễn tri thức sử dụng luật dẫn xuất (luật sinh)

      • 4. Biểu diễn tri thức sử dụng mạng ngữ nghĩa

    • III. CÁC TRƯỜNG PHÁI CỦA TRÍ TUỆ NHÂN TẠO.

      • 1. Trí tuệ nhân tạo truyền thống

      • 2. Trí tuệ nhân tạo tính toán

  • CHƯƠNG 2: BÀI TOÁN QUA SÔNG

    • I. TỔNG QUAN VỀ ĐỀ TÀI

      • 1. Giới thiệu đề tài

    • II. PHÂN TÍCH ĐỀ TÀI

  • III. CÀI ĐẶT THUẬT TOÁN

    • 1. Ý tưởng

    • 2. Xây dựng thuật toán

  • IV. KẾT QUẢ

  • V. KẾT LUẬN

    • 1. Hướng phát triển của đề tài.

    • 2. Đánh giá

Nội dung

Trí tuệ là gì? Theo từ điển Bách khoa toàn thư Webster: Trí tuệ là khả năng phản ứng thích hợp lại những tình huống mới thông qua điều chỉnh hành vi một cách thích hợp. Hiểu rõ mối liên hệ giữa các sự kiện của thế giới bên ngoài nhằm đưa ra những hành vi phù hợp để đạt được mục đích.

TÌM HIỂU VỀ TRÍ TUỆ NHÂN TẠO

TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO

Trí tuệ nhân tạo (AI) là nỗ lực tìm hiểu các yếu tố trí tuệ và cách tự khám phá bản thân con người Khác với triết học và tâm lý học, AI không chỉ nghiên cứu mà còn thiết lập các yếu tố trí tuệ Một trong những lý do quan trọng để nghiên cứu AI là nhằm tạo ra các thực thể thông minh có ích cho con người AI đã sản sinh ra nhiều sản phẩm quan trọng từ những ngày đầu hình thành, và mặc dù không thể dự đoán tương lai, máy tính điện tử với độ thông minh nhất định đã có ảnh hưởng sâu rộng đến cuộc sống hiện tại và sự phát triển của văn minh nhân loại.

Chế tạo máy móc thông minh hơn con người là ước mơ từ lâu của nhân loại, và sự phát triển mạnh mẽ của năng lực máy tính đã tạo điều kiện thuận lợi cho trí tuệ nhân tạo Các chương trình AI hiện nay có khả năng phản ứng nhanh và hiệu quả hơn, mặc dù mục tiêu cuối cùng là tạo ra máy móc có tư duy giống con người vẫn còn xa vời Tuy nhiên, lĩnh vực này đang tiến bộ nhanh chóng và ngày càng thể hiện tính hữu ích trong nhiều công việc yêu cầu trí thông minh.

Xây dựng trí tuệ nhân tạo liên quan đến việc biểu diễn và vận dụng tri thức để giải quyết vấn đề, đồng thời bổ sung tri thức thông qua việc phát hiện từ các thông tin có sẵn, đặc biệt là thông qua máy học.

Tri thức là kết quả của quá trình nhận thức, học tập và lập luận

Người ta thường phân loại tri thức ra làm các dạng như sau:

 Tri thức sự kiện: là các khẳng định về một sự kiện, khái niệm nào đó (trong một phạm vi xác định).

Tri thức thủ tục là khái niệm dùng để mô tả các phương pháp, bước đi cần thực hiện và trình tự giải quyết một vấn đề Thuật toán và thuật giải chính là những ví dụ tiêu biểu của tri thức thủ tục.

Tri thức mô tả là hình thức thông tin cung cấp chi tiết về các đối tượng, sự kiện, vấn đề hay khái niệm, giúp người đọc hình dung rõ ràng về chúng Ví dụ, một cái bàn thường có bốn chân, và con người thì có hai tay và hai mắt.

Tri thức Heuristic là một loại tri thức cảm tính, thường được biểu hiện dưới dạng ước lượng và phỏng đoán Loại tri thức này thường hình thành từ kinh nghiệm cá nhân, giúp con người đưa ra quyết định nhanh chóng trong các tình huống không chắc chắn.

Biểu diễn tri thức là phương pháp thể hiện thông tin trong máy tính nhằm tối ưu hóa khả năng giải quyết các bài toán Để đạt được hiệu quả cao, việc biểu diễn tri thức cần phải được thực hiện một cách chính xác và hợp lý.

+ Thể hiện được tất cả các thông tin cần thiết.

Tri thức mới có thể được suy diễn từ tập hợp các sự kiện và luật suy diễn, cho phép biểu diễn các nguyên lý tổng quát cùng với những tình huống đặc trưng Điều này giúp nắm bắt được ý nghĩa ngữ nghĩa phức tạp một cách hiệu quả.

+ Cho phép lý giải ở mức tri thức cao hơn.

CÁC PHƯƠNG PHÁP BIỂU DIỄN TRI THỨC TRÊN MÁY TÍNH

Con người nhận thức thế giới thông qua các giác quan và khả năng lập luận, từ đó đưa ra hành động hợp lý Mục tiêu của trí tuệ nhân tạo ứng dụng là phát triển các Agent thông minh, có khả năng tương tự như con người Agent thông minh được hiểu là những hệ thống có khả năng nhận thức môi trường qua các cảm biến và thực hiện hành động phù hợp thông qua các bộ phận hành động Ví dụ về Agent thông minh bao gồm robot, softbot và hệ chuyên gia Để đưa ra quyết định chính xác, các Agent thông minh cần có tri thức về thế giới thực.

Cơ sở tri thức là tập hợp tri thức được biểu diễn nhằm giúp Agent suy diễn và đưa ra câu trả lời hoặc hành động hợp lý Hệ tri thức bao gồm một cấu trúc tri thức (CSTT) và thủ tục suy diễn, cho phép liên kết các sự kiện từ môi trường với tri thức đã có Khi thiết kế Agent cho một vấn đề cụ thể, CSTT sẽ chứa tri thức liên quan đến đối tượng đó Để máy tính có thể xử lý tri thức hiệu quả, cần phải biểu diễn tri thức một cách thuận tiện, đó là mục tiêu của việc biểu diễn tri thức.

1 Logic mệnh đề Đây có lẽ là kiểu biểu diễn tri thức đơn giản nhất và gần gũi nhất đối với chúng ta.

Mệnh đề là một khẳng định, một phát biểu mà giá trị của nó chỉ có thể hoặc là đúng hoặc là sai.

Giá trị của mệnh đề không chỉ dựa vào chính nó, mà còn phụ thuộc vào nhiều yếu tố khác như thời gian và không gian Một số mệnh đề luôn đúng hoặc sai, trong khi những mệnh đề khác có thể thay đổi giá trị tùy thuộc vào hoàn cảnh Ví dụ, mệnh đề "Con người không thể nhảy cao hơn 5m với chân trần" đúng trên Trái Đất, nhưng có thể sai trên các hành tinh có lực hấp dẫn yếu hơn Chúng ta thường ký hiệu mệnh đề bằng các chữ cái Latin như a, b, c,

Có 3 phép nối cơ bản để tạo ra những mệnh đề mới từ những mệnh đề cơ sở là phép hội, giao và phủ định Bên cạnh các thao tác tính ra giá trị các mệnh đề phức từ giá trị những mệnh đề con, chúng ta có được một cơ chế suy diễn như sau:

 Modus Ponens: Nếu mệnh đề A là đúng và mệnh đề A => B là đúng thì giá trị của B sẽ là đúng.

 Modus Tollens: Nếu mệnh đề A => B là đúng và mệnh đề B là sai thì giá trị của A sẽ là sai.

Biểu diễn tri thức bằng mệnh đề gặp khó khăn do không thể can thiệp vào cấu trúc của chúng, dẫn đến hạn chế trong các thao tác suy luận Để khắc phục vấn đề này, khái niệm vị từ và lượng từ như "với mọi" và "tồn tại" đã được đưa vào nhằm tăng cường tính cấu trúc của mệnh đề.

Trong logic vị từ, một mệnh đề bao gồm hai thành phần chính: các đối tượng tri thức và mối liên hệ giữa chúng, được gọi là vị từ Các mệnh đề này được biểu diễn dưới dạng cụ thể.

Vị từ (, , …, ) Như vậy để biểu diễn vị của các trái cây, các mệnh đề sẽ được viết thành:

 Cam có vị Ngọt Vị (Cam, Ngọt)

 Cam có màu Xanh Màu (Cam, Xanh)

Vị từ cho phép chúng ta diễn đạt tri thức dưới dạng các mệnh đề tổng quát, trong đó giá trị của mệnh đề được xác định bởi các đối tượng tri thức cấu thành nó.

Chẳng hạn tri thức: "A là bố của B nếu B là anh hoặc em của một người con của A" có thể được biểu diễn dưới dạng vị từ như sau:

 Bố (A, B) = Tồn tại Z sao cho: Bố (A, Z) và (Anh (Z, B) hoặc Anh (B, Z))

Trong trường hợp này, mệnh đề Bố (A, B) là một mệnh đề tổng quát Như vậy nếu ta có các mệnh đề cơ sở là:

 Bố ("An", "Bình") có giá trị đúng (An là bố của Bình)

 Anh ("Tú", "Bình") có giá trị đúng (Tú là anh của Bình) Thì mệnh đề Bố ("An", "Tú") sẽ có giá trị là đúng (An là bố của Tú).

Việc chỉ sử dụng logic mệnh đề thông thường không cho phép chúng ta xác định mối liên hệ giữa c và a, b thông qua các phép nối mệnh đề Điều này dẫn đến việc không thể tính toán giá trị của mệnh đề c Nguyên nhân là do không thể biểu đạt rõ ràng tri thức như "A là bố của B" nếu tồn tại Z sao cho "A là bố của Z" và "Z là anh hoặc em của C" bằng các mệnh đề thông thường Đặc trưng của vị từ cho phép chúng ta diễn đạt các tri thức tổng quát như vậy.

Thêm một số ví dụ nữa để thấy rõ hơn khả năng của vị từ:

Câu cách ngôn "Không có vật gì là lớn nhất và không có vật gì là bé nhất!" có thể được biểu diễn dưới dạng vị từ như sau:

Câu châm ngôn "Gần mực thì đen, gần đèn thì sáng" nhấn mạnh rằng môi trường và bạn bè có ảnh hưởng lớn đến nhân cách của mỗi người Nếu chúng ta kết giao với những người xấu, chúng ta cũng dễ dàng trở thành xấu Ngược lại, nếu ở bên những người tốt, chúng ta sẽ được truyền cảm hứng để phát triển tích cực hơn.

3 Biểu diễn tri thức sử dụng luật dẫn xuất (luật sinh) a Khái niệm

Phương pháp biểu diễn tri thức bằng luật sinh, được phát minh bởi Newell và Simon, nhằm xây dựng hệ giải bài toán tổng quát Đây là một kiểu biểu diễn tri thức có cấu trúc, trong đó tri thức được tổ chức dưới dạng cặp điều kiện – hành động Cấu trúc cơ bản của nó là: "NẾU điều kiện xảy ra, THÌ hành động sẽ được thi hành".

Ngày nay, luật sinh đã trở nên phổ biến và được áp dụng rộng rãi trong nhiều hệ thống trí tuệ nhân tạo Luật sinh đóng vai trò như một công cụ mô tả, giúp giải quyết các vấn đề thực tế thay cho các phương pháp phân tích truyền thống Chúng được sử dụng như những chỉ dẫn hữu ích, mặc dù có thể không hoàn chỉnh, nhằm hỗ trợ quyết định trong quá trình tìm kiếm và giảm thiểu không gian tìm kiếm.

Tùy vào các vấn đề đang quan tâm mà luật sinh có những ngữ nghĩa hay cấu tạo khác nhau:

Trong logic vị từ: P1, P2, , Pn, Q là những biểu thức logic.

Trong ngôn ngữ lập trình, mỗi một luật sinh là một câu lệnh.

IF (P1 AND P2 AND AND Pn) THEN Q. Để biễu diễn một tập luật sinh, người ta thường phải chỉ rõ hai thành phần chính sau:

(1) Tập các sự kiện F (Facts)

(2) Tập các quy tắc R (Rules) áp dụng trên các sự kiện dạng như sau: f1 ^ f2 ^ ^ fi q

Trong đó, các fi, q đều thuộc F b Cơ chế suy luận trên các luật sinh

Suy diễn tiến là quá trình suy luận từ những sự kiện ban đầu để xác định các sự kiện có thể phát sinh từ những sự kiện này.

Suy diễn lùi là quá trình suy luận ngược, bắt đầu từ một số sự kiện ban đầu để tìm ra nguyên nhân gây ra các sự kiện đó Một ví dụ điển hình là trong việc chẩn đoán hỏng hóc máy tính, khi người dùng phân tích các triệu chứng để xác định vấn đề cụ thể Việc biểu diễn tri thức bằng luật có những ưu điểm và nhược điểm riêng, giúp cải thiện khả năng ra quyết định nhưng cũng có thể gặp khó khăn trong việc áp dụng cho các tình huống phức tạp.

Biểu diễn tri thức thông qua các luật đặc biệt là một phương pháp hiệu quả trong các hệ thống yêu cầu đưa ra hành động dựa trên các sự kiện quan sát được Phương pháp này mang lại nhiều lợi ích quan trọng.

 Các luật rất dễ hiểu nên có thể dễ dàng dùng để trao đổi với người dùng (vì nó

 là một trong những dạng tự nhiên của ngôn ngữ).

 Có thể dễ dàng xây dựng được cơ chế suy luận và giải thích từ các luật.

 Việc hiệu chỉnh và bảo trì hệ thống là tương đối dễ dàng.

 Có thể cải tiến dễ dàng để tích hợp các luật mờ.

 Các luật thường ít phụ thuộc vào nhau.

Các tri thức phức tạp có thể yêu cầu hàng ngàn quy luật sinh, dẫn đến nhiều vấn đề về tốc độ và quản trị hệ thống.

CÁC TRƯỜNG PHÁI CỦA TRÍ TUỆ NHÂN TẠO

Trí tuệ nhân tạo (AI) chia thành hai trường phái tư duy: Trí tuê nhân tạo truyền thống và trí tuệ tính toán.

1 Trí tuệ nhân tạo truyền thống

Trí tuệ nhân tạo truyền thống chủ yếu bao gồm các phương pháp học máy, được đặc trưng bởi hệ hình thức và phân tích thống kê Nó còn được gọi là Trí tuệ nhân tạo biểu tượng, Trí tuệ nhân tạo logic, Trí tuệ nhân tạo ngăn nắp (neat AI) và Trí tuệ nhân tạo cổ điển (Good Old Fashioned Artificial Intelligence) Các phương pháp này đóng vai trò quan trọng trong việc phát triển các ứng dụng trí tuệ nhân tạo hiện nay.

Hệ chuyên gia là một công nghệ sử dụng khả năng suy luận để đưa ra kết luận từ lượng lớn thông tin đã biết Ví dụ điển hình là Clippy, chương trình trợ giúp của Microsoft Office, có khả năng nhận diện các xu hướng khi người dùng gõ phím và cung cấp gợi ý hữu ích.

 Lập luận theo tình huống.

2 Trí tuệ nhân tạo tính toán

Trí tuệ tính toán nghiên cứu quá trình học tập và phát triển lặp, chẳng hạn như việc tinh chỉnh tham số trong các hệ thống connectionist Hình thức học này dựa trên dữ liệu kinh nghiệm và liên quan chặt chẽ đến trí tuệ nhân tạo phi ký hiệu cũng như trí tuệ nhân tạo lộn xộn.

(scruffy AI) và tính toán mềm (soft computing) Các phương pháp chính gồm có:

 Mạng neural: các hệ thống mạnh về nhận dạng mẫu (pattern recognition).

Hệ mờ (Fuzzy system) là các kỹ thuật suy luận không chắc chắn, được áp dụng phổ biến trong các hệ thống công nghiệp hiện đại và quản lý sản phẩm tiêu dùng.

Tính toán tiến hóa là một lĩnh vực ứng dụng các khái niệm sinh học như quần thể, biến dị và đấu tranh sinh tồn nhằm tạo ra các giải pháp tối ưu hơn cho các bài toán phức tạp Các phương pháp trong tính toán tiến hóa thường được phân chia thành hai nhóm chính: thuật toán tiến hóa, như thuật toán gene, và trí tuệ bầy đàn, ví dụ như hệ kiến.

 Trí tuê nhân tạo dựa hành vi (Behavior based AI): một phương pháp module để xây dựng các hệ thống Trí tuê nhân tạo bằng tay.

Nghiên cứu về hệ thống thông minh lai (hybrid intelligent system) đã chỉ ra rằng việc kết hợp hai trường phái khác nhau có thể mang lại hiệu quả cao Các luật suy diễn của hệ chuyên gia có thể được tạo ra từ mạng neural hoặc từ các luật dẫn xuất (production rule) thông qua phương pháp học thống kê, như trong kiến trúc ACT-R.

Các phương pháp trí tuệ nhân tạo được áp dụng rộng rãi trong nghiên cứu khoa học nhận thức, nhằm xây dựng mô hình nhận thức của con người Điều này khác biệt với nghiên cứu trí tuệ nhân tạo, vốn tập trung vào việc phát triển máy móc thực dụng mà không chú trọng đến việc mô phỏng hoạt động của bộ óc con người.

BÀI TOÁN QUA SÔNG

TỔNG QUAN VỀ ĐỀ TÀ

1 Giới thiệu đề tài a Bài toán: Qua sông

Tại một bến sông, có 3 con quỷ và 3 thầy tu cần qua sông, nhưng thuyền chỉ chứa tối đa 2 khách Quy tắc quan trọng là nếu số quỷ nhiều hơn số thầy tu ở một bên sông, quỷ sẽ ăn thịt thầy tu Để giải quyết bài toán này, cần xây dựng một chương trình nhằm đảm bảo an toàn cho các thầy tu trong suốt quá trình vượt sông.

PHÂN TÍCH ĐỀ TÀI

- Bài toán có hai trạng thái:

• Trạng thái bờ trái {số thầy tu, số quỷ}.

• Trạng thái bờ phải {số thầy tu, số quỷ}.

- Cách thay đổi các trạng thái:

• Trạng thái bờ trái: Di chuyển thầy tu hoặc quỷ qua bờ phải.

• Trạng thái bờ phải: Di chuyển thầy tu hoặc quỷ về lại bờ trái.

- Mỗi cách thay đổi trạng thái sẽ có cách thay đổi cụ thể:

• Di chuyển thầy tu hoặc quỷ qua bờ phải có các trường hợp thay đổi trạng thái:

 Đưa 2 thầy tu qua bờ phải.

 Đưa 2 quỷ qua bờ phải.

 Đưa 1 thầy tu hoặc 1 quỷ qua bờ phải.

 Đưa 1 thầy tu qua bờ phải.

Xét trường hợp này ta thấy

Khi không có đối tượng nào ở bờ phải, việc đưa một thầy tu qua bờ phải sẽ yêu cầu phải di chuyển thầy tu này trở lại bờ trái.

Để đảm bảo điều kiện an toàn cho bờ phải, số lượng quỷ và thầy tu phải bằng nhau Khi có thêm một thầy tu, sự chênh lệch giữa số quỷ và thầy tu ở bờ trái sẽ gia tăng, dẫn đến tình huống "Game over" nếu số quỷ vượt quá số thầy tu Do đó, việc duy trì sự cân bằng này là rất quan trọng.

0 và số quỷ bằng 1 Tại trường hợp này rõ ràng chở 1 thầy tu và 1 quỷ sẽ tối ưu hơn rất nhiều

Trong tình huống bờ phải có nhiều quỷ, nếu số lượng quỷ vượt quá 1, thầy tu sẽ gặp nguy hiểm và bị ăn thịt Ngược lại, nếu chỉ có 1 quỷ, nhiệm vụ của chúng ta là đưa thầy tu đó về bờ trái Do đó, việc chuyển một thầy tu sang bờ phải trong trường hợp này là không cần thiết.

+ Sẽ không tồn tại trường hợp bờ phải toàn thầy tu do khi đó thầy tu bên bờ trái sẽ bị ăn thịt

 Từ các phân tích ta thấy Trường hợp thay đổi trạng thái “Đưa 1 thầy tu qua bờ phải” là không cần thiết

 Đưa 1 quỷ qua bờ phải.

• Di chuyển thầy tu hoặc quỷ về lại bờ trái có hai trường hợp thay đổi trạng thái:

 Đưa 1 quỷ về bờ trái.

 Đưa 1 thầy tu và 1 quỷ về bờ trái.

Khi di chuyển thầy tu hoặc quỷ về bờ trái, em sẽ chỉ áp dụng hai trường hợp tối ưu nhất để tránh các vòng lặp vô hạn.

- Mỗi lần thực hiện thay đổi trạng thái thì cần phải kiểm tra trạng thái đó có thay đổi đúng hay không?

• Số thầy tu phải lớn hơn bằng số quỷ hoặc số thầy tu bằng 0 ở mỗi trạng thái.

CÀI ĐẶT THUẬT TOÁN

Chương trình trò chơi console này nhằm mục đích di chuyển số thầy tu và số quỷ từ bên trái sang bên phải, tuân theo các quy tắc nhất định Người dùng có thể tham gia trò chơi bằng cách nhập dữ liệu từ bàn phím hoặc cho phép máy tính thực hiện một lượt chơi tự động.

Chương trình được phát triển bằng ngôn ngữ Java thông qua phần mềm Apache NetBeans, sử dụng các thư viện như java.io.BufferedReader, java.io.IOException và java.io.InputStreamReader để xử lý dữ liệu đầu vào.

Bắt đầu thuật toán bằng cách khởi tạo hai mảng một chiều, mỗi mảng chứa hai giá trị tương ứng với số lượng thầy tu và quỷ ở hai bên bờ sông Sử dụng biến `input1` để đọc dữ liệu nhập từ bàn phím, với cú pháp `static int[] brinkLeft = new int[2];`, `static int[] brinkRight = new int[2];` và `static int count = 0;`.

Để xây dựng hàm khởi tạo cho chương trình, ta cần định nghĩa hàm với tham số đầu vào là n, được người dùng nhập trước khi gọi hàm Cụ thể, hàm sẽ gán giá trị n cho hai phần tử đầu tiên của mảng brinkLeft, trong khi hai phần tử của mảng brinkRight sẽ được khởi tạo bằng 0.

To build a function that checks the validity of a state in a problem involving monks and devils, we must ensure that the number of monks is greater than or equal to the number of devils on both sides of the river or that there are no monks present The function takes parameters for the number of monks and devils on each side: `static boolean check(int monkLeft, int devilLeft, int monkRight, int devilRight, char mode)` For instance, a state is invalid if there are no monks on the left side while there are two devils, and two monks on the right side with no devils.

&& mode == 'Q') return false; else if ((monkLeft >= devilLeft || monkLeft == 0) && (monkLeft >= 0

&& devilRight >= 0)) return true; return false;

Hàm được tạo ra với chức năng đưa quỷ, thầy tu hoặc cả hai từ bờ bên trái sang bờ bên phải Khi bắt đầu, hàm sẽ đọc dữ liệu về số lượng các đối tượng ở hai bên và kiểm tra các trường hợp thay đổi trạng thái theo thứ tự ưu tiên Sau đó, hàm sẽ xác định xem các điều kiện của đề bài có được thỏa mãn hay không và thực hiện các trường hợp tương ứng nếu thỏa mãn.

The scenario involves five cases: two monks, two devils, one monk and one devil, and a single monk and devil crossing over To manage the crossing, two temporary arrays, `tempLeft` and `tempRight`, are initialized to represent the counts of monks and devils on each side A loop iterates five times, during which the counts from the left and right banks are copied into the temporary arrays In the first case, two monks cross from the left to the right bank, updating the respective counts accordingly.

} case 2: { tempLeft[0] ; tempLeft[1] ; tempRight[0]++; tempRight[1]++; break;

} if (check (tempLeft[0], tempLeft[1], tempRight[0], tempRight[1])) { count++; brinkLeft[0] = tempLeft[0]; brinkLeft[1] = tempLeft[1]; brinkRight[0] = tempRight[0]; brinkRight[1] = tempRight[1]; switch (i) { case 0: { System.out.println (count +" Two Monk: Left ->>> Right. break;

} case 1: { System.out.println (count +" Two Devil: Left ->>> Right." ); break;

} case 2: { System.out.println (count + " One Monk and One Devil: Left ->>> Right."); break;

System.out.println (count + " One Monk: Left ->>> Right."); break;

System.out.println (count + " One Devil: Left ->>> Right."); break;

To create a function that moves the monk and the demon from the right bank to the left bank, we define a static method called `brinkRightToLeft()` This method initializes two temporary integer arrays, `tempLeft` and `tempRight`, to hold the positions of the monk and demon A loop iterates three times to update their positions: the monk's position is incremented while the demon's position is decremented This approach ensures a smooth transition of both characters across the river.

} case 1: { tempLeft[0]++; tempLeft[1]++; tempRight[0] ; tempRight[1] ; break;

} if(check(tempLeft[0], tempLeft[1], tempRight[0], tempRight[1], 'V') ) { count++; brinkLeft[0] = tempLeft[0]; brinkLeft[1] = tempLeft[1]; brinkRight[0] = tempRight[0]; brinkRight[1] = tempRight[1]; switch(i) { case 0: {

System.out.println(count +" One Devil : Left >> Right.");

System.out.println("Invalid number amount");

In this scenario, if the combined total of player_monk and player_devil is less than or equal to 2, and certain conditions regarding their positions on brinkRight are met, the values of player_monk and player_devil will be transferred from brinkRight to brinkLeft Specifically, this occurs when player_monk is not zero and player_devil is not zero, while also ensuring that the count is odd Following this transfer, the count is incremented accordingly.

System.out.println(count +" "+player_monk+" Monk and

"+player_devil+" Devil : Left

Ngày đăng: 28/12/2021, 08:53

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w