Như phimuemue đã chỉ ra, đây là vấn đề về đồ thị. Bạn có một tập hợp các chuỗi (đỉnh), với các cạnh (hướng). Rõ ràng, biểu đồ phải là connected để có thể chuỗi - điều này rất dễ kiểm tra. Thật không may, các quy tắc ngoài điều này có một chút không rõ ràng:
Nếu chuỗi có thể được sử dụng nhiều lần, nhưng liên kết không thể, thì vấn đề là tìm một số Eulerian path. Đường dẫn Eulerian sử dụng từng cạnh một lần, nhưng có thể sử dụng các đỉnh nhiều lần.
// this can form a valid Eulerian path
yard
dog
god
glitter
yard -> dog -> god -> dog -> glitter
Nếu không thể sử dụng nhiều lần, thì vấn đề là tìm một số Hamiltonian path. Kể từ khi vấn đề đường dẫn Hamilton là NP-hoàn thành, không có giải pháp hiệu quả chính xác được biết đến. Tất nhiên, đối với n nhỏ, hiệu quả không thực sự quan trọng và giải pháp bạo lực sẽ hoạt động tốt.
Tuy nhiên, mọi thứ không hoàn toàn đơn giản, bởi vì tập hợp các biểu đồ có thể xảy ra làm đầu vào cho vấn đề này bị giới hạn. Ví dụ: sau đây là biểu đồ được chỉ dẫn hợp lệ (trong ký hiệu dot) (*).
digraph G {
alpha -> beta;
beta -> gamma;
gamma -> beta;
gamma -> delta;
}
Tuy nhiên, biểu đồ này không thể được xây dựng từ chuỗi sử dụng các quy tắc của trò chơi này: Kể từ alpha và gamma cả kết nối với beta, họ phải kết thúc với cùng một ký tự (giả sử rằng họ kết thúc với 'x'), nhưng gamma cũng kết nối với delta, vì vậy delta cũng phải bắt đầu bằng 'x'. Nhưng delta không thể bắt đầu bằng 'x', bởi vì nếu có, thì sẽ có cạnh alpha -> delta
, không nằm trong biểu đồ gốc.
Do đó, đây là không hoàn toàn giống với vấn đề đường dẫn Hamilton, bởi vì tập hợp các yếu tố đầu vào bị hạn chế hơn. Có thể là một thuật toán hiệu quả tồn tại để giải quyết vấn đề chuỗi chuỗi ngay cả khi không có thuật toán hiệu quả tồn tại để giải quyết vấn đề đường dẫn Hamilton.
Nhưng ... Tôi không biết thuật toán đó là gì. Có lẽ một người nào khác sẽ đưa ra một giải pháp thực sự, nhưng trong thời gian đó, tôi hy vọng ai đó tìm thấy câu trả lời này thú vị.
(*) Nó cũng sẽ xảy ra có đường dẫn Hamilton: alpha -> beta -> gamma -> delta
, nhưng điều đó không liên quan đến những gì sau.
Tôi chắc chắn rằng mọi chuỗi có thể bị xích. Quy tắc còn thiếu bạn đang ẩn từ chúng tôi là gì? –
?xem {ship, petal, axe, elf} làm thế nào bạn có thể tạo ra một chuỗi đơn lẻ? kết thúc thư đầu tiên nên được bắt đầu thứ hai để thực hiện một chuỗi. –
ahh! đó là về các chữ cái kết thúc và bắt đầu phải giống nhau. Cảm ơn bạn đã làm rõ :) –