Deixe-me ver se consigo esclarecer isso em alto nível. Suponha que a instância UG seja um gráfico bipartido , , em que e . Você deseja construir um novo gráfico para que, se a instância UG for satisfatória, tenha um corte grande e se a instância UG não for satisfatória, terá apenas cortes muito pequenos.G = ( V ∪ W , E ) { π e } e ∈ E π e : Σ → Σ | Σ | = m H 1 - δ H δ HG=(V∪W,E){πe}e∈Eπe:Σ→Σ|Σ|=mH1−δHδH
O gráfico contém, para cada vértice em , uma nuvem de pontos, cada um identificado por . A intenção é que você deve ser capaz de interpretar um longo código de codificação das etiquetas de como um corte de . Lembre-se de que para codificar algum com o código longo, use uma função booleana ; em particular, é a função ditadora . Vamos produzir um cortado (isto é, bi-partição dos vértices) a partir da codificação longa do código da seguinte maneira. SeH W 2 m x ∈ { - 1 , 1 } Σ W H σ ∈ Σ f : { - 1 , 1 } Σ → { - 1 , 1 } f ( x ) = x σ S ∪ T w ∈ WHW2mx∈{−1,1}ΣWHσ∈Σf:{−1,1}Σ→{−1,1}f(x)=xσS∪Tw∈Wtem um rótulo codificado pela função booleana , vá para a nuvem de vértices em correspondente e coloque em todos os vértices na nuvem que são rotulados por algum para o qual . Todos os outros vão para . Você pode fazer isso para trás para funções booleanas atribuir a todos com base em um corte de .f H w S x f ( x ) = 1 T w ∈ W HfHwSxf(x)=1Tw∈WH
Para que a redução funcione, você precisa saber apenas olhando o valor de um corteS ∪ TS∪T se as funções booleanas correspondentes ao corte estão próximas de uma codificação longa de código de alguma atribuição de etiquetas para que satisfaz um monte de restrições ug de . Então a questão é quais informações obtemos a partir do valor de um corte . Considerar quaisquer dois vértices com etiqueta na nuvem correspondentes a e com etiqueta na nuvem correspondente a (na redução olharmos apenas paraW GWGS ∪ T a x w b y w ′ wS∪Taxwbyw′w, em nuvens diferentes). Dissemos que o corte pode ser usado para derivar funções booleanas e . Agora, se houver uma aresta em , será cortada se e somente se . Portanto, usar apenas o valor de um corte para saber se as funções booleanas induzidas são "boas" é o mesmo que ter um teste que, dadas as funções booleanas , apenas pede o que fração de alguma lista especificada de pares temos .w ′ f w f w ′ ( a , b ) H ( a , b ) f w ( x ) ≠ f w ′ ( y ) { f w } w ∈ W ( ( w , x ) , ( w ′ , y ) ) f w ( x ) ≠ f w ′ (w′fwfw′(a,b)H(a,b)fw(x)≠fw′(y){fw}w∈W((w,x),(w′,y))y )fw(x)≠fw′(y)
Em outras palavras, sempre que Ryan disser nas notas "testar se ", o que ele realmente quer dizer é "em , adicione uma aresta entre o vértice na nuvem de " por e o vértice na nuvem de rotulado por ". Ou seja, para cada , cada dois de seus vizinhos e cada , incluem a aresta entre o vértice na nuvem de rotulada por e o vértice na nuvem de rotulado por e atribua o peso da arestaf w ( x ) ≠ f w ' ( y ) H w x w ' y v ∈ V w , w ' x , y ∈ { - 1 , 1 } n w x ∘ ¸ v , w w ' y ∘ ¸ v , w ′ ( ( 1 - ρ ) / 2 )fw(x)≠fw′(y)Hwxw′yv∈Vw,w′x,y∈{−1,1}nwx∘πv,ww′y∘πv,w′d((1+ρ)/2)n−d((1−ρ)/2)d((1+ρ)/2)n−d onde é a distância de Hamming entre e . Dessa maneira, o valor de um corte dividido pelo peso total da aresta é exatamente igual à probabilidade de sucesso do teste.ddxxyy