Encontrar a distância entre dois polinômios (representados como árvores)


20

Um colega que trabalha em programação genética me fez a seguinte pergunta. Primeiro tentei resolvê-lo com base em uma abordagem gananciosa, mas, pensando bem, encontrei um contraexemplo do algoritmo ganancioso. Então, pensei que vale a pena mencionar aqui.


Considere dois polinômios que são representados por suas árvores de expressão. Por exemplo, x3−2x+1 e x2+4 são ilustrados abaixo:

Regras:

  1. Cada nó é um nome de variável ( x,y,z,… ), um número ou uma operação (+, -, ×).
  2. A travessia em ordem da árvore deve resultar em um polinômio válido.
  3. Os nós de operação possuem grau 2. Outros nós possuem grau 0. Todos os nós possuem grau 1 (exceto raiz, cuja graduação é 0).

Em um nó N da árvore, defina a operação básica da seguinte maneira:

  1. x×
  2. Uma operação básica pode construir uma árvore de expressão em cima de N (veja o exemplo abaixo).

O custo da operação básica do tipo 1 é 1. O custo do tipo 2 é igual ao número de operações {+, -, ×} na árvore de expressão recém-criada.

Exemplo para o tipo 2: O custo da operação básica a seguir é 2, pois a árvore de expressão criada no topo do nó N usa duas operações (- e ×).

Seja T1 e T2 duas árvores de expressão representando polinômios. Defina a distância de T1 e T2 da seguinte forma: o custo mínimo das operações básicas para converter T1 em T2. Observe que não exigimos que a árvore convertida tenha a mesma estrutura que T2. Nós apenas queremos que ele calcule o mesmo polinômio que T2. (Veja os comentários para um exemplo.)

O problema: dados T1 e T2, apresentam um algoritmo que calcula sua distância.

Exemplo 1: Seja T1 e T2 as duas árvores ilustradas no início deste post. Para converter a árvore direita para a esquerda, é possível construir uma árvore de custo 3 em cima de × e alterar 4 para 1 (o custo total é 4).

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


2
Se a operação "excluir" não for permitida, a distância não será uma distância. Por exemplo: uma árvore T1 = (x * x) +4 não pode ser transformada em T2 = x, mas T2 pode ser transformada em T1 adicionando (* x) e depois (+4) em cima de x. Tudo bem? Ou você deve definir a distância como as operações mínimas necessárias para converter T1 em T2 ou T2 em T1.
— Marzio De Biasi

4
O custo é igual a 0 se e somente se as duas fórmulas aritméticas fornecidas (sem divisão) representam o mesmo polinômio. Se bem me lembro, esse é um problema típico no coRP (por atribuição aleatória) que não é conhecido por P.
— Tsuyoshi Ito

4
@ Tsuyoshi: Ah, entendo. Você está apontando para o problema do teste de identidade polinomial . (Boas referências: [1 ] e [2 ]). Eu devo pensar sobre isso. Enquanto isso, qualquer sugestão é bem-vinda.
— MS Dousti

4
Sim é isso. Parece que na versão típica do problema de teste de identidade polinomial, dois polinômios de entrada são dados como circuitos, não como fórmulas. Portanto, minha redação de que a versão da fórmula é "típica" provavelmente foi imprecisa. De qualquer forma, colocar até a versão da fórmula em P parece ser um problema em aberto.
— Tsuyoshi Ito

2
@Vor: Na formulação atual, a entrada T1 é realmente uma árvore e a entrada T2 é um polinômio que, por acaso, é dado como árvore, no sentido a seguir. Alterar T1 para uma árvore diferente que representa o mesmo polinômio pode alterar a resposta em geral, enquanto alterar T2 de maneira semelhante não.
— Tsuyoshi Ito

Respostas:


10

Distância de Edição em Árvore é uma generalização da distância de edição de sequência. A distância entre duas árvores é o número mínimo de inserções de nó \ exclusões \ e novas etiquetas necessárias para transformar uma árvore na outra. (quando excluímos o nó v, os filhos de v se tornam filhos do pai (v)). O problema é NP-difícil quando as árvores não são ordenadas, mas quando são ordenadas (ou seja, existe uma ordem da esquerda para a direita entre os irmãos), o problema é solucionável em O (n ^ 3) (como no artigo que Sadeq mencionado). Uma boa pesquisa que descreve isso: http://portal.acm.org/citation.cfm?id=1085283


1
Graças Aviv. Será ótimo se você mesclar suas respostas (acho que você tem problemas ao usar sua conta anterior). Você pode usar os conselhos nesta publicação (Especialmente neste link ).
— MS Dousti

Como é que esta capa abordagem diferentes árvores com polinômios eqivalent
— narek Bojikian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.