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

Câu hỏi thuật toán: Chuyển đổi từ từ một từ nhất định sang một từ khác chỉ sử dụng các từ trong một từ nhất định

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

Vấn đề được mô tả chi tiết dưới đây:

Cho hai từ (beginWord và endWord) và một danh sách từ trong từ điển, hãy tìm xem có chuỗi chuyển đổi từ BeginWord sang endWord sao cho:

  1. Mỗi lần chỉ có thể thay đổi một chữ cái
  2. Mỗi từ được chuyển đổi phải có trong danh sách từ. Lưu ý rằng BeginWord không phải là một từ được chuyển đổi.

Tôi biết thuật ngữ này có thể được giải bằng cách sử dụng tìm kiếm theo chiều rộng. Sau khi tôi đề xuất giải pháp BFS thông thường, người phỏng vấn hỏi tôi có thể làm nhanh hơn không. Tôi chưa tìm ra cách nào để tăng tốc nó. Người phỏng vấn nói với tôi rằng tôi nên sử dụng PriorityQueue thay vì Best First Search. Mức độ ưu tiên được xác định bởi khoảng cách Hamming giữa từ hiện tại và mục tiêu.

Tôi không hiểu tại sao điều này lại tăng tốc độ tìm kiếm. Tôi nghĩ bằng cách sử dụng PriorityQueue, chúng tôi cố gắng tìm kiếm con đường để đạt được tiến bộ (tức là giảm khoảng cách Hamming).

Điều này có vẻ giống như một cách tiếp cận tham lam. Câu hỏi của tôi là:

Tại sao giải pháp này nhanh hơn giải pháp tìm kiếm theo chiều rộng? Tôi cảm thấy con đường thực tế có thể như thế này: lúc đầu không có tiến triển gì, khoảng cách Hamming thậm chí còn tăng lên, nhưng sau khi đạt được một từ, khoảng cách Hamming giảm dần. Trong trường hợp này, tôi nghĩ giải pháp xếp hàng ưu tiên sẽ chậm hơn.

Bất kỳ lời khuyên sẽ được đánh giá rất cao Cảm ơn!

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

Trước tiên, tôi khuyên bạn nên đọc qua một số bài viết về thuật toán tìm kiếm đồ thị, chúng sẽ giải thích vấn đề theo bất kỳ chi tiết nào bạn muốn (và hơn thế nữa).

长话短说:

Người phỏng vấn của bạn đã đề xuất một cách hiệu quả điều gì đó gần với thuật toán A*.

Nó có một điểm khác biệt so với BFS: nút nào được mở rộng trước. Nó sử dụng khái niệm điểm khoảng cách và bao gồm hai yếu tố:

  • Tại nút X, chúng ta đã “đi” được quãng đường tính theo số lần chuyển đổi cho đến nay.
  • Để đạt được mục tiêu từ

Nếu chúng ta muốn đi theo đường đi của X thì tổng số bước từ điểm xuất phát đến đích không thể nhỏ hơn phân số này. Nó có thể nhiều hơn nếu khoảng cách nghỉ ngơi thực sự dài hơn (một số từ bắt buộc cho đường dẫn trực tiếp không tồn tại trong từ điển).

A* cho chúng ta biết: Trong số tất cả các nút mở (chưa được mở rộng), nút có thể đưa ra đường dẫn giải pháp tổng thể ngắn nhất sẽ được thử trước tiên, tức là nút có điểm thấp nhất. Để đạt được điều này, hàng đợi ưu tiên là một lựa chọn tốt.

Trong nhiều trường hợp, A* có thể giảm đáng kể không gian tìm kiếm (so với BFS) mà vẫn đảm bảo tìm được lời giải tối ưu.

A* không phải là thuật toán tham lam. Cuối cùng nó sẽ khám phá toàn bộ không gian tìm kiếm, theo thứ tự tốt hơn nhiều so với BFS mù.

Về câu hỏi thuật toán: Chuyển đổi từ từ một từ nhất định sang một từ khác chỉ sử dụng các từ trong một từ chính tả nhất định, 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/53773267/

30 4 0
Taklimakan
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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