cuốn sách gpt4 ai đã làm

Các nút bị thiếu trong giải pháp (thuật toán giải mê cung DFS)

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 04:44:13 26 4
mua khóa gpt4 Nike

Thuật toán DFS của tôi đang gặp sự cố với các nút bị thiếu trong giải pháp (xem hình ảnh). Điều này xảy ra mỗi khi thuật toán của tôi đi vào ngõ cụt: nút được bật ra khỏi ngăn xếp và quay trở lại cho đến khi tìm thấy một bước di chuyển khả dụng và không bao giờ được đưa lại. Có cách nào dễ dàng để khắc phục mà không cần thực hiện lại toàn bộ thuật toán không?

Một số nút bị thiếu trong giải pháp được đánh dấu bằng mũi tên màu đỏ

    int start = maze.getStart();
int stop cuối cùng = maze.getStop();
cột int cuối cùng = maze.getColumns();
int cuối cùng[] di chuyển = { 0, 1, 2, 3 }; //Bắc, E, S, W
vị trí int = bắt đầu;

Ô mê cung.Cells = maze.getCells();
cell.setVisited(position);
Ngăn xếp ngăn xếp = Ngăn xếp mới<>();
thămCells:
while(vị trí != dừng){
boolean[] availableMoves = cell.getAvailableMoves(position); //chỉ truy cập các ô chưa được truy cập
for(int move : di chuyển){
if(availableMoves[move] && maze.isMovePossible(position, move)){
vị trí = doMove(vị trí, di chuyển)
cell.setVisited(position);
stack.push(vị trí);
tiếp tục tham quanCells;
}
}
vị trí = stack.pop();
}
trả về ngăn xếp;

Tôi muốn mã có thể tự giải thích được. Thuật toán vẽ đúng nên tôi sẽ không đăng ở đây. Đừng ngần ngại hỏi thêm thông tin trong phần bình luận.

câu trả lời hay nhất

Tôi nghĩ vấn đề là khi bạn di chuyển từ A đến B, bạn đang chèn vị trí B mới vào ngăn xếp. Điều này có nghĩa là khi bạn quay lại, bạn sẽ không bao giờ quay lại A.

Hãy thử sắp xếp lại:

            vị trí = doMove(vị trí, di chuyển)
cell.setVisited(position);
stack.push(vị trí);

đến

            stack.push(vị trí);
vị trí = doMove(vị trí, di chuyển)
cell.setVisited(position);

Về java - thiếu nút trong giải pháp (thuật toán giải mê cung DFS), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/30144667/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress