A estrutura de conjunto de corte XOR e os projetos combinatórios

7

Dado um gráfico G(V,E)e um subconjunto de vértices , definir = o conjunto de arestas que ligam um vértice em com um vértice em .TVcvocêtset(T)TVT

Nosso objetivo é pré-processar modo que, dado qualquer conjunto , possamos retornar rapidamente uma aresta em ou responder que está vazio. A estrutura deve ter complexidade de espaço , ou seja, não temos permissão para manter todas as arestas. A complexidade da consulta deve ser .GTcvocêtset(T)cvocêtset(T)O~(|V|)O~(|T|)

Kapron et al sugerem a seguinte solução pura, que funciona quando o tamanho de cada cutset é no máximo 1.

Atribua a cada borda um número único. Para cada vértice , mantenha - o XOR binário dos números de todas as arestas adjacentes a ele. Dada uma consulta em , calcule - o XOR binário de todos os vértices em T. Toda aresta interna a (ou seja, tem dois pontos de extremidade dentro de ) recebe XOR duas vezes e, portanto, não é incluída em . Portanto, é na verdade um XOR de todas as arestas em .vxor(v)Txor(T)TTxor(T)xor(T)cvocêtset(T)

Se o tamanho de cada cutset for no máximo 1, haverá duas opções: , o que significa que está vazio ou é o número da aresta única em .xor(T)=0 0cvocêtset(T)xor(T)cvocêtset(T)

Os autores então descrevem uma estrutura aleatória complexa para lidar com o caso em que contém mais de uma única aresta.cvocêtset(T)

Mas na conclusão, eles dizem que:

Não é difícil ver que a técnica descrita aqui pode ser tornada determinística com um adicional no tempo de atualização, se sabemos que os cortes são de tamanho não superior a , através do uso de combinações designs ".O~(k)k

Infelizmente, para mim, isso parece difícil ... Eu não entendo: como projetos combinatórios podem ser usados ​​para resolver o problema quando o tamanho de todos os cutets é no máximo ?k

Erel Segal-Halevi
fonte

Respostas:

5

Você pode usar um código linear com distância 2kou então. A matriz de verificação de paridade do código tem a propriedade de que o XOR de qualquer conjunto de no máximo2k-1 1colunas é diferente de zero. Isso significa, em particular, que dado o XOR de no máximok colunas, você pode determinar (não necessariamente com eficiência) quantas colunas foram XORed (uma vez que, se não pudesse, obteria um conjunto de no máximo 2k-1 1colunas que XORs para zero). O custo dessa codificação é o número de linhas da matriz de verificação de paridade. Se você escolher os parâmetros corretamente e um código decodificável com eficiência (lembre-se de que a matriz de verificação de paridade de um código é a matriz geradora de seu duplo), provavelmente você obterá a conclusão declarada na observação.

Yuval Filmus
fonte