Eu tenho vetores de bits, cada um dos quais é composto por bits. Vamos denotar com o ésimo bit do ésimo vetor, . Cada vetor de bit está sujeito às 2 restrições a seguir:
- .
- .
- Os bits que não se enquadram nas restrições acima podem ser ou 1 , mas, nesse caso, o número de 0 pode ser no máximo .
Agora eu tenho outro vetor de bits , de m bits: inicialmente todos os m bits de s são definidos como 1 . Por "aplicação v i a s " Quero dizer executar uma operação AND entre s e v i , e, em seguida, armazenando o resultado em s . Estou interessado na evolução da s após aplicações repetidas dos vetores v 1 , . . . , v m dado na entrada.
Vamos chamar esses "pedidos repetidos" uma trajetória , e vamos definir tal trajetória mais formalmente. Uma trajectória é uma sequência composta por, no máximo, vectores (seleccionados de entre aqueles v 1 , . . . , V m dada na entrada) de tal modo que se v i está na sequência, então toda a v j depois de ele deve ter j < i . Então, por exemplo, < v 8 , v 3 > é uma trajetória, enquanto < 8 , v 7 não é (porque 8 ≥ 3 ).
Claramente, existem trajetórias diferentes. Seja S = ∅ . Suponha para levar s = 1 m e deixá-lo passar por uma trajectória T 1 : para cada passo da trajectória T 1 , colocar o novo valor tomado por s em S . Em seguida, repetir o mesmo processo para uma outra trajectória T 2 (sempre a partir de s = 1 m , e sempre colocando cada novo valor de s em S ). Então, novamente, até você tentar todo o possível 2 trajectórias. No final, o conjunto S conterá todos os valores possíveis que podem assumir, considerando os vetores na entrada.
Questões
- Eu tenho na entrada. Eu quero saber | S | , Ou seja, quantos valores distintos podem s nunca assumir. Claro, eu quero calcular | S | eficientemente, ou seja, sem tentar todas as trajetórias possíveis, uma a uma.
- Suponha que você remova a 2ª restrição dos vetores na entrada. Como isso afeta ?
- Mais importante, o que mais me importa é como cresce com m . É | S | no máximo polinômio em m ? É | S | no máximo subexponencial em m ? Ou existem instâncias ruins nas quais | S | é necessariamente exponencial em m ?
A figura a seguir é um exemplo com :
Eu estou recolha de dados experimentais, de modo a tentar descobrir que é a relação entre a e | S | . Até agora, os experimentos parecem sugerir que | S | cresce mais rápido que m 3 e mais lento que m 4 . No entanto, no momento esses dados não têm muito significado: eu só consegui fazer testes de até m = 90 ; portanto, pode haver uma grande constante oculta ou algum outro fator que permita que uma lei exponencial pareça uma lei polinomial para pequenos m . Preciso de ajuda para descobrir o comportamento assintótico de | S | em relação a .
fonte
Respostas:
Repensei isso e meu limite inicial estava correto. Na pior das hipóteses,|S|=Θ(m2mlgm)
A prova está dividida em duas partes. Em primeiro lugar . Considere os possíveis valores desde uma trajetória que termina emvx. Todo bits[j]paraj≥xé 0 e todo bits[j]paraj<x-m|S|=O(m2mlgm) s vx s[j] j≥x s[j] é 1. Portanto, existem apenas2mj<x−mlgm valores quespodem tomar. Multiplique pelo número devx2mlgm s vx e temos o limite superior.
Em segundo lugar, considere
Eu afirmo que esse esquema fornece a você . Para cada colunavxconsidere também o(m|S|=Ω(m2mlgm) vx colunas à sua direita. Cada um dos2 m(mlgm−2) combinações deles dão umsdiferente, e em cada um dessesso bit de ajuste superior é o bit de ajuste superior devx, portanto, não há contagem dupla entre diferentesvx.2mlgm−2 s s vx vx
fonte