Tìm khoảng cách giữa hai đa thức (đại diện là cây)


20

Một đồng nghiệp làm việc về lập trình di truyền đã hỏi tôi câu hỏi sau đây. Lần đầu tiên tôi đã cố gắng giải quyết nó dựa trên một cách tiếp cận tham lam, nhưng trên một ý nghĩ thứ hai, tôi đã tìm thấy một ví dụ cho thuật toán tham lam. Vì vậy, tôi nghĩ rằng nó đáng được đề cập ở đây.


Xét hai đa thức được biểu thị bằng cây biểu thức của chúng. Chẳng hạn, và được minh họa bên dưới:x32x+1x2+4

Quy tắc:

  1. Mỗi nút là một tên biến ( ), một số hoặc một hoạt động (+, -, ×).x,y,z,
  2. Việc truyền tải theo thứ tự của cây sẽ dẫn đến một đa thức hợp lệ.
  3. Các nút hoạt động có mức độ 2. Các nút khác có mức độ 0. Tất cả các nút có mức độ 1 (ngoại trừ gốc, có mức độ bằng 0).

Trên một nút N của cây, xác định thao tác cơ bản như sau:

  1. Một hoạt động cơ bản có thể thay đổi nhãn của nút. Chẳng hạn, có thể thay đổi thành 3 hoặc + có thể thay đổi thành .x×
  2. Một hoạt động cơ bản có thể xây dựng một cây biểu thức trên đầu N (xem ví dụ bên dưới).

Chi phí cho hoạt động cơ bản của loại 1 là 1. Chi phí cho loại 2 bằng với số lượng hoạt động {+, -, ×} trong cây biểu thức mới được xây dựng.

Ví dụ cho loại 2: Chi phí của hoạt động cơ bản sau là 2, do cây biểu thức được xây dựng trên đỉnh nút N sử dụng hai hoạt động (- và ×).

Đặt T1 và T2 là hai cây biểu thức đại diện cho đa thức. Xác định khoảng cách của T1 và T2 như sau: chi phí tối thiểu cho các hoạt động cơ bản để chuyển đổi T1 sang T2. Lưu ý rằng chúng tôi không yêu cầu cây được chuyển đổi có cùng cấu trúc với T2. Chúng tôi chỉ muốn nó tính toán đa thức giống như T2. (Xem các bình luận cho một ví dụ.)

Vấn đề: Đưa ra T1 và T2, trình bày một thuật toán tính khoảng cách của chúng.

Ví dụ 1: Gọi T1 và T2 là hai cây được minh họa ở đầu bài này. Để chuyển đổi cây bên phải sang cây bên trái, người ta có thể xây dựng một cây có giá 3 trên đỉnh × và thay đổi 4 thành 1 (tổng chi phí là 4).

x4x4+4x3+6x2+4x+1x(x+1)4x4x36x24x


2
Nếu thao tác "xóa" không được phép, thì khoảng cách không phải là khoảng cách. Ví dụ: không thể chuyển đổi một cây T1 = (x * x) +4 thành T2 = x, nhưng T2 có thể được chuyển đổi thành T1 thêm (* x) và sau đó (+4) trên đầu x. Là nó ổn ? Hoặc bạn nên xác định khoảng cách là các thao tác tối thiểu cần thiết để chuyển đổi T1 sang T2 hoặc T2 sang T1.
Marzio De Biasi

4
Chi phí bằng 0 khi và chỉ khi hai công thức số học đã cho (không phân chia) đại diện cho cùng một đa thức. Nếu tôi nhớ chính xác, đây là một vấn đề điển hình trong coRP (bằng cách gán ngẫu nhiên) không được biết đến ở P.
Tsuyoshi Ito

4
@Tsuyoshi: Ồ, tôi hiểu rồi. Bạn đang chỉ vào vấn đề kiểm tra danh tính đa thức . (Tài liệu tham khảo tốt: [1 ] và [2 ]). Tôi phải suy nghĩ về điều này. Trong khi đó, bất kỳ đề nghị đều được chào đón.
MS Dousti

4
Vâng, đó là nó. Có vẻ như trong phiên bản điển hình của bài toán kiểm tra nhận dạng đa thức, hai đa thức đầu vào được đưa ra dưới dạng mạch, không phải là công thức. Vì vậy, cách diễn đạt của tôi rằng phiên bản công thức là điển hình có lẽ là không chính xác. Dù sao, việc đặt ngay cả phiên bản công thức trong P dường như là một vấn đề mở.
Tsuyoshi Ito

2
@Vor: Trong công thức hiện tại, đầu vào T1 thực sự là một cây và đầu vào T2 là một đa thức mà tình cờ được đưa ra dưới dạng cây, theo nghĩa sau. Thay đổi T1 thành một cây khác đại diện cho cùng một đa thức có thể thay đổi câu trả lời nói chung, trong khi thay đổi T2 theo cách tương tự thì không.
Tsuyoshi Ito

Câu trả lời:


10

Tree Edit Khoảng cách là tổng quát hóa khoảng cách chỉnh sửa chuỗi. Khoảng cách giữa hai cây là số lần chèn nút tối thiểu \ xóa \ và chuyển đổi cần thiết để biến một cây này thành cây khác. (khi chúng tôi xóa nút v, con của v trở thành con của cha mẹ (v)). Vấn đề là NP-hard khi các cây không có thứ tự, nhưng khi chúng được sắp xếp (nghĩa là có một trật tự từ trái sang phải giữa các anh chị em), vấn đề có thể giải quyết được trong thời gian O (n ^ 3) (như trong bài báo Sadeq đã đề cập). Một khảo sát tốt mô tả điều này: http://portal.acm.org/citation.cfm?id=1085283


1
Cảm ơn Sẽ thật tuyệt nếu bạn hợp nhất các câu trả lời của mình (Tôi nghĩ bạn có vấn đề khi sử dụng tài khoản trước đó). Bạn có thể sử dụng các lời khuyên trong bài viết này (Đặc biệt, liên kết này ).
MS Dousti

Cách tiếp cận này sẽ bao phủ các cây khác nhau bằng đa thức eqivalent
narek Bojikian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.