Você está na página 1de 105

Programação semidefinida

João Gouveia

Jornadas de Matemática - 10 de fevereiro 2018 - Universidade do Porto

João Gouveia (UC ) Programação semidefinida 1 / 25


Capítulo 1

O que é?

João Gouveia (UC ) Programação semidefinida 2 / 25


Programação linear - Exemplo

João Gouveia (UC ) Programação semidefinida 3 / 25


Programação linear - Exemplo

Um criador de porcos pretende determinar as quantidades de cada


tipo de ração que devem ser dadas diariamente a cada animal por
forma a conseguir uma certa qualidade nutritiva a um custo mínimo.

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5

João Gouveia (UC ) Programação semidefinida 3 / 25


Programação Linear - Exemplo (cont.)

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5

João Gouveia (UC ) Programação semidefinida 4 / 25


Programação Linear - Exemplo (cont.)

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5
x→ Quantidade de Ração A y → Quantidade de Ração B.

João Gouveia (UC ) Programação semidefinida 4 / 25


Programação Linear - Exemplo (cont.)

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5
x→ Quantidade de Ração A y → Quantidade de Ração B.

min 10x + 5y
s. a

João Gouveia (UC ) Programação semidefinida 4 / 25


Programação Linear - Exemplo (cont.)

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5
x→ Quantidade de Ração A y → Quantidade de Ração B.

min 10x + 5y
s. a 20x + 50y ≥ 200

João Gouveia (UC ) Programação semidefinida 4 / 25


Programação Linear - Exemplo (cont.)

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5
x→ Quantidade de Ração A y → Quantidade de Ração B.

min 10x + 5y
s. a 20x + 50y ≥ 200
50x + 10y ≥ 150

João Gouveia (UC ) Programação semidefinida 4 / 25


Programação Linear - Exemplo (cont.)

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5
x→ Quantidade de Ração A y → Quantidade de Ração B.

min 10x + 5y
s. a 20x + 50y ≥ 200
50x + 10y ≥ 150
30x + 30y ≤ 600

João Gouveia (UC ) Programação semidefinida 4 / 25


Programação Linear - Exemplo (cont.)

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5
x→ Quantidade de Ração A y → Quantidade de Ração B.

min 10x + 5y
s. a 20x + 50y ≥ 200
50x + 10y ≥ 150
30x + 30y ≤ 600
x,y ≥ 0

João Gouveia (UC ) Programação semidefinida 4 / 25


Programação Linear - Exemplo (cont.)

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5
x→ Quantidade de Ração A y → Quantidade de Ração B.

min 10x + 5y
min 10x + 5y 
−200
 
20 50

s. a 20x + 50y ≥ 200 s. a


−150  50
 600  + −30
  
10   
−30
 x
≥0
y
50x + 10y ≥ 150
 0   1 0 
0 0 1
30x + 30y ≤ 600
x,y ≥ 0 Forma canónica

João Gouveia (UC ) Programação semidefinida 4 / 25


Programação Linear - Exemplo (cont.)

Ração A Ração B Quantidade Requerida


Proteína 20 50 ≥ 200
Vitamina 50 10 ≥ 150
Hid. Carbono 30 30 ≤ 600
Custo 10 5
x→ Quantidade de Ração A y → Quantidade de Ração B.

min 10x + 5y min 10x + 5y


 x
 

20x + 50y ≥ 200


  
s. a s. a
20
 50
50
10
−1
0
0
−1
0 y  200
0  z1  =  150 
 

50x + 10y ≥ 150 −30 −30 0 0 −1 z2 


z3
−600

30x + 30y ≤ 600 x,y z1 , z2 , z3 ≥ 0


x,y ≥ 0
Forma normal

João Gouveia (UC ) Programação semidefinida 4 / 25


Programação linear - Definição
Programa Linear - Forma normal
min hc, xi
s.t. Ax = b
x ≥ 0.

Programa Linear - Forma canónica


min hc, y i
s.t. b + Ay ≥ 0

João Gouveia (UC ) Programação semidefinida 5 / 25


Programação linear - Definição
Programa Linear - Forma normal
min hc, xi min hc, xi
s.t. Ax = b s.t. Ax = b
x ≥ 0. x ∈ Rn+ .

Programa Linear - Forma canónica


min hc, y i min hc, xi
s.t. b + Ay ≥ 0 s.t. b + Ay ∈ Rn+ .

João Gouveia (UC ) Programação semidefinida 5 / 25


Programação linear - Definição
Programa Linear - Forma normal
min hc, xi min hc, xi
s.t. Ax = b s.t. Ax = b
x ≥ 0. x ∈ Rn+ .

Programa Linear - Forma canónica


min hc, y i min hc, xi
s.t. b + Ay ≥ 0 s.t. b + Ay ∈ Rn+ .

Em ambos os casos estamos a otimizar sobre fatias afins do ortante


não-negativo.

Podemos jogar esse jogo com outros cones.


João Gouveia (UC ) Programação semidefinida 5 / 25
O meu cone favorito

Uma matriz A simétrica n × n diz-se semidefinida positiva, e


escrevemos A  0 se
x t Ax ≥ 0 para todo x ∈ Rn .

João Gouveia (UC ) Programação semidefinida 6 / 25


O meu cone favorito

Uma matriz A simétrica n × n diz-se semidefinida positiva, e


escrevemos A  0 se
x t Ax ≥ 0 para todo x ∈ Rn .
Os valores próprios de A forem todos não negativos.

João Gouveia (UC ) Programação semidefinida 6 / 25


O meu cone favorito

Uma matriz A simétrica n × n diz-se semidefinida positiva, e


escrevemos A  0 se
x t Ax ≥ 0 para todo x ∈ Rn .
Os valores próprios de A forem todos não negativos.
A = ni=1 vi vit para alguns vi ∈ Rn .
P

João Gouveia (UC ) Programação semidefinida 6 / 25


O meu cone favorito

Uma matriz A simétrica n × n diz-se semidefinida positiva, e


escrevemos A  0 se
x t Ax ≥ 0 para todo x ∈ Rn .
Os valores próprios de A forem todos não negativos.
A = ni=1 vi vit para alguns vi ∈ Rn .
P

A = B t B para alguma matriz B.

João Gouveia (UC ) Programação semidefinida 6 / 25


O meu cone favorito

Uma matriz A simétrica n × n diz-se semidefinida positiva, e


escrevemos A  0 se
x t Ax ≥ 0 para todo x ∈ Rn .
Os valores próprios de A forem todos não negativos.
A = ni=1 vi vit para alguns vi ∈ Rn .
P

A = B t B para alguma matriz B.

Exemplo:
 
9 −8 −2
A = −8 26 4 0
−2 4 6

João Gouveia (UC ) Programação semidefinida 6 / 25


O meu cone favorito

Uma matriz A simétrica n × n diz-se semidefinida positiva, e


escrevemos A  0 se
x t Ax ≥ 0 para todo x ∈ Rn .
Os valores próprios de A forem todos não negativos.
A = ni=1 vi vit para alguns vi ∈ Rn .
P

A = B t B para alguma matriz B.

Exemplo:
 
9 −8 −2
A = −8 26 4   0 −→ Spec(A) = {5, 6, 30}
−2 4 6

João Gouveia (UC ) Programação semidefinida 6 / 25


O meu cone favorito

Uma matriz A simétrica n × n diz-se semidefinida positiva, e


escrevemos A  0 se
x t Ax ≥ 0 para todo x ∈ Rn .
Os valores próprios de A forem todos não negativos.
A = ni=1 vi vit para alguns vi ∈ Rn .
P

A = B t B para alguma matriz B.

Exemplo:
    
9 −8 −2 1 2 2 1 0 2
A = −8 26 4   0 −→ Spec(A) = {5, 6, 30} −→ A = 0 1 −5 2 1 −1
−2 4 6 2 −1 −1 2 −5 −1

João Gouveia (UC ) Programação semidefinida 6 / 25


O meu cone favorito

Uma matriz A simétrica n × n diz-se semidefinida positiva, e


escrevemos A  0 se
x t Ax ≥ 0 para todo x ∈ Rn .
Os valores próprios de A forem todos não negativos.
A = ni=1 vi vit para alguns vi ∈ Rn .
P

A = B t B para alguma matriz B.

Exemplo:
    
9 −8 −2 1 2 2 1 0 2
A = −8 26 4   0 −→ Spec(A) = {5, 6, 30} −→ A = 0 1 −5 2 1 −1
−2 4 6 2 −1 −1 2 −5 −1

O conjunto das matrizes semidefinidas positivas, S+n , é fechado para

adição e multiplicação por escalares positivos: é um cone convexo.

João Gouveia (UC ) Programação semidefinida 6 / 25


Programação semidefinida - Definição

Programa semidefinido - Forma normal


minX ∈S n hC, X i
s.t. hAi , X i = bi , i = 1, · · · , m
X  0.

Programa semidefinido - Forma canónica


miny ∈Rm hc, y iP
s.t. A0 + y i Ai  0

João Gouveia (UC ) Programação semidefinida 7 / 25


Programação semidefinida - Definição

Programa semidefinido - Forma normal


minX ∈S n hC, X i
s.t. hAi , X i = bi , i = 1, · · · , m
X  0.

Programa semidefinido - Forma canónica


miny ∈Rm hc, y iP
s.t. A0 + y i Ai  0

Mais uma vez, em ambos os casos estamos a otimizar sobre fatias


afins do cone das matrizes semidefinidas positivas.

João Gouveia (UC ) Programação semidefinida 7 / 25


Programação semidefinida - Exemplos

min x −y
 +z 
1 x y
s.t.  x x z 0
y z y

João Gouveia (UC ) Programação semidefinida 8 / 25


Programação semidefinida - Exemplos

min x −y
 +z 
1 x y
s.t.  x x z 0
y z y

João Gouveia (UC ) Programação semidefinida 8 / 25


Programação semidefinida - Exemplos

min x −y +z  min x +y +z
 
1+x y −z x +y

1 x y
s.t.  x x z 0 s.t.  y −z 1−x z 0
y z y x +y z z

João Gouveia (UC ) Programação semidefinida 8 / 25


Programação semidefinida - Exemplos

min x −y +z  min x +y +z
 
1+x y −z x +y

1 x y
s.t.  x x z 0 s.t.  y −z 1−x z 0
y z y x +y z z

João Gouveia (UC ) Programação semidefinida 8 / 25


Capítulo 2

Para que serve?


1. Problema do corte máximo

João Gouveia (UC ) Programação semidefinida 9 / 25


Problema do corte máximo

Definition
Dado um grafo G = (V , E) e uma partição V1 , V2 de V , o conjunto C
de arestas entre V1 e V2 diz-se um corte.

João Gouveia (UC ) Programação semidefinida 10 / 25


Problema do corte máximo

Definition
Dado um grafo G = (V , E) e uma partição V1 , V2 de V , o conjunto C
de arestas entre V1 e V2 diz-se um corte.

João Gouveia (UC ) Programação semidefinida 10 / 25


Problema do corte máximo

Definition
Dado um grafo G = (V , E) e uma partição V1 , V2 de V , o conjunto C
de arestas entre V1 e V2 diz-se um corte.

João Gouveia (UC ) Programação semidefinida 10 / 25


Problema do corte máximo

Definition
Dado um grafo G = (V , E) e uma partição V1 , V2 de V , o conjunto C
de arestas entre V1 e V2 diz-se um corte.

O problema
Queremos encontrar o corte C com o maior número possível de
arestas.

João Gouveia (UC ) Programação semidefinida 10 / 25


Como encontrar um corte

Ideia Simples
Lançamos a moeda ao ar para cada vértice e dividimo-los em cara e
coroa.

João Gouveia (UC ) Programação semidefinida 11 / 25


Como encontrar um corte

Ideia Simples
Lançamos a moeda ao ar para cada vértice e dividimo-los em cara e
coroa.

João Gouveia (UC ) Programação semidefinida 11 / 25


Como encontrar um corte

Ideia Simples
Lançamos a moeda ao ar para cada vértice e dividimo-los em cara e
coroa.

João Gouveia (UC ) Programação semidefinida 11 / 25


Como encontrar um corte

Ideia Simples
Lançamos a moeda ao ar para cada vértice e dividimo-los em cara e
coroa.

João Gouveia (UC ) Programação semidefinida 11 / 25


Como encontrar um corte

Ideia Simples
Lançamos a moeda ao ar para cada vértice e dividimo-los em cara e
coroa.

A probabilidade de uma aresta estar no corte é de 1/2, logo o número


médio de arestas obtido é metade das do grafo, e portanto pelo
menos metade do corte ótimo.

João Gouveia (UC ) Programação semidefinida 11 / 25


Como encontrar um corte

Ideia Simples
Lançamos a moeda ao ar para cada vértice e dividimo-los em cara e
coroa.

A probabilidade de uma aresta estar no corte é de 1/2, logo o número


médio de arestas obtido é metade das do grafo, e portanto pelo
menos metade do corte ótimo.
Podemos fazer melhor?
João Gouveia (UC ) Programação semidefinida 11 / 25
Problema reformulado
Seja x i = 1 se i ∈ V1 e −1 se não. Então x i x j = −1 se {i, j} estiver no
corte e 1 se não.

João Gouveia (UC ) Programação semidefinida 12 / 25


Problema reformulado
Seja x i = 1 se i ∈ V1 e −1 se não. Então x i x j = −1 se {i, j} estiver no
corte e 1 se não.
MaxCut
X1
max (1 − x i x j ).
x∈{−1,1}n 2
i,j

João Gouveia (UC ) Programação semidefinida 12 / 25


Problema reformulado
Seja x i = 1 se i ∈ V1 e −1 se não. Então x i x j = −1 se {i, j} estiver no
corte e 1 se não.
MaxCut
X1
max (1 − x i x j ).
x∈{−1,1}n 2
i,j

Note-se que X = xx t = [x i x j ]i,j=1,...,n , para x ∈ {−1, 1}n se e só se


X  0, X ii = 1 e car(X ) = 1.

João Gouveia (UC ) Programação semidefinida 12 / 25


Problema reformulado
Seja x i = 1 se i ∈ V1 e −1 se não. Então x i x j = −1 se {i, j} estiver no
corte e 1 se não.
MaxCut
X1
max (1 − x i x j ).
x∈{−1,1}n 2
i,j

Note-se que X = xx t = [x i x j ]i,j=1,...,n , para x ∈ {−1, 1}n se e só se


X  0, X ii = 1 e car(X ) = 1.

MaxCut
X1
max (1 − X ij ),
X 2
i,j

com X  0, diag(X ) = 1, car(X ) = 1.


João Gouveia (UC ) Programação semidefinida 12 / 25
Problema reformulado
Seja x i = 1 se i ∈ V1 e −1 se não. Então x i x j = −1 se {i, j} estiver no
corte e 1 se não.
MaxCut
X1
max (1 − x i x j ).
x∈{−1,1}n 2
i,j

Note-se que X = xx t = [x i x j ]i,j=1,...,n , para x ∈ {−1, 1}n se e só se


X  0, X ii = 1 e car(X ) = 1.
Esquecendo a última condição obtemos uma relaxação.
MaxCut relaxado
X1
max (1 − X ij ),
X 2
i,j

com X  0, diag(X ) = 1
João Gouveia (UC ) Programação semidefinida 12 / 25
Exemplo
Grafo aleatório com 70 vértices e 250 arestas.

Qual o maior corte?

João Gouveia (UC ) Programação semidefinida 13 / 25


Exemplo
Grafo aleatório com 70 vértices e 250 arestas.

Qual o maior corte?


No máximo 195, porque o ótimo da relaxação é 195.56

João Gouveia (UC ) Programação semidefinida 13 / 25


Exemplo
Grafo aleatório com 70 vértices e 250 arestas.

Qual o maior corte?


No máximo 195, porque o ótimo da relaxação é 195.56 Mas quão boa
é a aproximação?
João Gouveia (UC ) Programação semidefinida 13 / 25
Goemans-Williamson

Theorem (Goemans-Williamson 95)


O valor real do MAXCUT é pelo menos 0.87856 vezes o valor da
relaxação.

João Gouveia (UC ) Programação semidefinida 14 / 25


Goemans-Williamson

Theorem (Goemans-Williamson 95)


O valor real do MAXCUT é pelo menos 0.87856 vezes o valor da
relaxação.

Como o encontrar?

João Gouveia (UC ) Programação semidefinida 14 / 25


Goemans-Williamson

Theorem (Goemans-Williamson 95)


O valor real do MAXCUT é pelo menos 0.87856 vezes o valor da
relaxação.

Como o encontrar?
1 Escrever X = CC T . Linhas de C ↔ vetores em Rn de norma 1.

João Gouveia (UC ) Programação semidefinida 14 / 25


Goemans-Williamson

Theorem (Goemans-Williamson 95)


O valor real do MAXCUT é pelo menos 0.87856 vezes o valor da
relaxação.

Como o encontrar?
1 Escrever X = CC T . Linhas de C ↔ vetores em Rn de norma 1.
2 A cada vértice v de G corresponde um ponto pv na esfera S n−1 .

João Gouveia (UC ) Programação semidefinida 14 / 25


Goemans-Williamson

Theorem (Goemans-Williamson 95)


O valor real do MAXCUT é pelo menos 0.87856 vezes o valor da
relaxação.

Como o encontrar?
1 Escrever X = CC T . Linhas de C ↔ vetores em Rn de norma 1.
2 A cada vértice v de G corresponde um ponto pv na esfera S n−1 .
3 Geramos um hiperplano aleatório e particionamos os vértices
conforme o lado em que calham.

João Gouveia (UC ) Programação semidefinida 14 / 25


Goemans-Williamson

Theorem (Goemans-Williamson 95)


O valor real do MAXCUT é pelo menos 0.87856 vezes o valor da
relaxação.

Como o encontrar?
1 Escrever X = CC T . Linhas de C ↔ vetores em Rn de norma 1.
2 A cada vértice v de G corresponde um ponto pv na esfera S n−1 .
3 Geramos um hiperplano aleatório e particionamos os vértices
conforme o lado em que calham.

João Gouveia (UC ) Programação semidefinida 14 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

Probabilidade da aresta v , w estar no corte é


θ
π

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

Probabilidade da aresta v , w estar no corte é


θ arccoshu, wi
=
π π

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

Probabilidade da aresta v , w estar no corte é


θ arccoshu, wi arccos(Xij )
= =
π π π

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

Probabilidade da aresta v , w estar no corte é


θ arccoshu, wi arccos(Xij )
= =
π π π

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

Probabilidade da aresta v , w estar no corte é


θ arccoshu, wi arccos(Xij )
= =
π π π

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

Probabilidade da aresta v , w estar no corte é


θ arccoshu, wi arccos(Xij ) 1 − Xij
= = ≥ 0.87856 .
π π π 2

João Gouveia (UC ) Programação semidefinida 15 / 25


Porque funciona?
Dados dois vetores pv e pw qual a probabilidade de (v , w) estar no
corte?

Probabilidade da aresta v , w estar no corte é


θ arccoshu, wi arccos(Xij ) 1 − Xij
= = ≥ 0.87856 .
π π π 2

O número esperado de arestas é 0.87856 o valor da relaxação.


João Gouveia (UC ) Programação semidefinida 15 / 25
Exemplo revisitado

Grafo aleatório com 70 vértices e 250 arestas.

Ótimo da relaxação é 195.56.

João Gouveia (UC ) Programação semidefinida 16 / 25


Exemplo revisitado

Grafo aleatório com 70 vértices e 250 arestas.

Ótimo da relaxação é 195.56.


Corte com 176 > 171.8 = 0.87856 × 195.56 arestas

João Gouveia (UC ) Programação semidefinida 16 / 25


Capítulo 3

Para que serve?


2. Otimização polinomial

João Gouveia (UC ) Programação semidefinida 17 / 25


Positividade

Dado um polinómio real, como verificar se é sempre não negativo?

João Gouveia (UC ) Programação semidefinida 18 / 25


Positividade

Dado um polinómio real, como verificar se é sempre não negativo?

Será x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 não negativo?

João Gouveia (UC ) Programação semidefinida 18 / 25


Positividade

Dado um polinómio real, como verificar se é sempre não negativo?

Será x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 não negativo?

João Gouveia (UC ) Programação semidefinida 18 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

João Gouveia (UC ) Programação semidefinida 19 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

Um polinómio soma de quadrados (sdq) é sempre não negativo.

João Gouveia (UC ) Programação semidefinida 19 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

Um polinómio soma de quadrados (sdq) é sempre não negativo.


Mas como verificamos se é sdq?

João Gouveia (UC ) Programação semidefinida 19 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

Um polinómio soma de quadrados (sdq) é sempre não negativo.


Mas como verificamos se é sdq?
Seja grau(p) = 2d e Xd o vetor dos monómios de grau ≤ d.

João Gouveia (UC ) Programação semidefinida 19 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

Um polinómio soma de quadrados (sdq) é sempre não negativo.


Mas como verificamos se é sdq?
Seja grau(p) = 2d e Xd o vetor dos monómios de grau ≤ d.
X
p= hi (x)2
i

João Gouveia (UC ) Programação semidefinida 19 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

Um polinómio soma de quadrados (sdq) é sempre não negativo.


Mas como verificamos se é sdq?
Seja grau(p) = 2d e Xd o vetor dos monómios de grau ≤ d.
X X
p= hi (x)2 = (ĥit Xd )2
i i

João Gouveia (UC ) Programação semidefinida 19 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

Um polinómio soma de quadrados (sdq) é sempre não negativo.


Mas como verificamos se é sdq?
Seja grau(p) = 2d e Xd o vetor dos monómios de grau ≤ d.
X X X
p= hi (x)2 = (ĥit Xd )2 = Xdt hi ĥit Xd
i i i

João Gouveia (UC ) Programação semidefinida 19 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

Um polinómio soma de quadrados (sdq) é sempre não negativo.


Mas como verificamos se é sdq?
Seja grau(p) = 2d e Xd o vetor dos monómios de grau ≤ d.
!
X X X X
2
p= hi (x) = (ĥit Xd )2 = Xdt hi ĥit Xd = Xdt hi ĥit Xd
i i i i

João Gouveia (UC ) Programação semidefinida 19 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

Um polinómio soma de quadrados (sdq) é sempre não negativo.


Mas como verificamos se é sdq?
Seja grau(p) = 2d e Xd o vetor dos monómios de grau ≤ d.
!
X X X X
2
p= hi (x) = (ĥit Xd )2 = Xdt hi ĥit Xd = Xdt hi ĥit Xd = Xdt HXd
i i i i

com H  0.

João Gouveia (UC ) Programação semidefinida 19 / 25


Somas de quadrados
Para certificar não negatividade neste caso basta escrever

x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 = (x 2 − y 2 + y )2 + (xy − x)2 .

Um polinómio soma de quadrados (sdq) é sempre não negativo.


Mas como verificamos se é sdq?
Seja grau(p) = 2d e Xd o vetor dos monómios de grau ≤ d.
!
X X X X
2
p= hi (x) = (ĥit Xd )2 = Xdt hi ĥit Xd = Xdt hi ĥit Xd = Xdt HXd
i i i i

com H  0. Assim p é sdq se e só se p(x) = Xdt HXd para algum


H  0.
João Gouveia (UC ) Programação semidefinida 19 / 25
Exemplo

p(x) = x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 tem grau 4 logo d = 2. Temos:

X2 = [1, x, y , x 2 , xy , y 2 ]t .

João Gouveia (UC ) Programação semidefinida 20 / 25


Exemplo

p(x) = x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 tem grau 4 logo d = 2. Temos:

X2 = [1, x, y , x 2 , xy , y 2 ]t .

p(x) é soma de quadrados sse existir H  0 tal que


  
h11 h12 h13 h14 h15 h16 1
h12 h22 h23 h24 h25 h26 x 
  
 y .
 2 2
h13 h23 h33 h34 h35 h36  
p(x) = 1 x y x xy y  h14 h24 h34 h44  2
 h45 h46 
x 
h15 h25 h35 h45 h55 h56 xy 
h16 h26 h36 h46 h56 h66 y2

João Gouveia (UC ) Programação semidefinida 20 / 25


Exemplo

p(x) = x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 tem grau 4 logo d = 2. Temos:

X2 = [1, x, y , x 2 , xy , y 2 ]t .

p(x) é soma de quadrados sse existir H  0 tal que


  
h11 h12 h13 h14 h15 h16 1
h12 h22 h23 h24 h25 h26 x 
  
 y .
 2 2
h13 h23 h33 h34 h35 h36  
p(x) = 1 x y x xy y  h14 h24 h34 h44  2
 h45 h46 
x 
h15 h25 h35 h45 h55 h56 xy 
h16 h26 h36 h46 h56 h66 y2

p(x) = h11 + 2h12 x + 2h13 y + (2h14 + h22 )x 2 + (2h15 + 2h23 )xy + · · ·


Expandindo são equações lineares nas entradas de H logo temos um
programa semidefinido que podemos resolver.

João Gouveia (UC ) Programação semidefinida 20 / 25


Exemplo

p(x) = x 2 + x 4 + y 2 − x 2 y 2 − 2y 3 + y 4 tem grau 4 logo d = 2. Temos:

X2 = [1, x, y , x 2 , xy , y 2 ]t .

p(x) é soma de quadrados sse existir H  0 tal que


  
0 0 0 0 0 0 1
0 1
 0 0 −1 0 x 
 
 0 0 1 1 0 −1 y .
 
p(x) = 1 x y x 2 xy y 2 
 
0 0 1 1 0 −1  2
 x 
0 −1 0 0 1 0 xy 
0 0 −1 −1 0 1 y2

p(x) = h11 + 2h12 x + 2h13 y + (2h14 + h22 )x 2 + (2h15 + 2h23 )xy + · · ·


Expandindo são equações lineares nas entradas de H logo temos um
programa semidefinido que podemos resolver.

João Gouveia (UC ) Programação semidefinida 20 / 25


Hilbert

Theorem (Hilbert 1888)


Para polinómios de grau 2d em n variáveis não negatividade e sdq são
equivalentes se e só se uma das seguintes condições se verificar:

João Gouveia (UC ) Programação semidefinida 21 / 25


Hilbert

Theorem (Hilbert 1888)


Para polinómios de grau 2d em n variáveis não negatividade e sdq são
equivalentes se e só se uma das seguintes condições se verificar:
n = 1;

João Gouveia (UC ) Programação semidefinida 21 / 25


Hilbert

Theorem (Hilbert 1888)


Para polinómios de grau 2d em n variáveis não negatividade e sdq são
equivalentes se e só se uma das seguintes condições se verificar:
n = 1;
d = 1;

João Gouveia (UC ) Programação semidefinida 21 / 25


Hilbert

Theorem (Hilbert 1888)


Para polinómios de grau 2d em n variáveis não negatividade e sdq são
equivalentes se e só se uma das seguintes condições se verificar:
n = 1;
d = 1;
n = 2 and d = 2.

João Gouveia (UC ) Programação semidefinida 21 / 25


Hilbert

Theorem (Hilbert 1888)


Para polinómios de grau 2d em n variáveis não negatividade e sdq são
equivalentes se e só se uma das seguintes condições se verificar:
n = 1;
d = 1;
n = 2 and d = 2.

Theorem (Artin 1927 - 17.o Problema de Hilbert)


Um polinómio é não negativo se e só se for soma de quadrados de
funções racionais.

João Gouveia (UC ) Programação semidefinida 21 / 25


Exemplo de Motzkin
Em 1967 Motzkin deu o primeiro exemplo explícito de polinómio não
negativo não sdq.

M(x, y ) = x 4 y 2 + y 4 x 2 + 1 − 3x 2 y 2 .

João Gouveia (UC ) Programação semidefinida 22 / 25


Exemplo de Motzkin
Em 1967 Motzkin deu o primeiro exemplo explícito de polinómio não
negativo não sdq.

M(x, y ) = x 4 y 2 + y 4 x 2 + 1 − 3x 2 y 2 .

João Gouveia (UC ) Programação semidefinida 22 / 25


Exemplo de Motzkin
Em 1967 Motzkin deu o primeiro exemplo explícito de polinómio não
negativo não sdq.

M(x, y ) = x 4 y 2 + y 4 x 2 + 1 − 3x 2 y 2 .

2 2
x 3 y + xy 3 − 2xy x2 − y2
 
2 2
M(x, y ) = (x + y + 1) + .
x2 + y2 x2 + y2

João Gouveia (UC ) Programação semidefinida 22 / 25


Otimização

Como usar esta ideia na minimização de polinómios?

João Gouveia (UC ) Programação semidefinida 23 / 25


Otimização

Como usar esta ideia na minimização de polinómios?

Otimização polinomial global


pmin = min p(x) sobre todo x ∈ Rn .

João Gouveia (UC ) Programação semidefinida 23 / 25


Otimização

Como usar esta ideia na minimização de polinómios?

Otimização polinomial global


pmin = min p(x) sobre todo x ∈ Rn .

Transformamos num problema de não negatividade.

Otimização polinomial global 2.0


pmin = max λ tal que p(x) − λ ≥ 0 para todo x ∈ Rn .

João Gouveia (UC ) Programação semidefinida 23 / 25


Otimização

Como usar esta ideia na minimização de polinómios?

Otimização polinomial global


pmin = min p(x) sobre todo x ∈ Rn .

Transformamos num problema de não negatividade.

Otimização polinomial global 2.0


pmin = max λ tal que p(x) − λ ≥ 0 para todo x ∈ Rn .

Agora substituimos a não negatividade.

Otimização polinomial aproximada


psdq = max λ tal que p(x) − λ é sdq.

João Gouveia (UC ) Programação semidefinida 23 / 25


Otimização

Como usar esta ideia na minimização de polinómios?

Otimização polinomial global


pmin = min p(x) sobre todo x ∈ Rn .

Transformamos num problema de não negatividade.

Otimização polinomial global 2.0


pmin = max λ tal que p(x) − λ ≥ 0 para todo x ∈ Rn .

Agora substituimos a não negatividade.

Otimização polinomial aproximada


psdq = max λ tal que p(x) − λ é sdq.

Este é um problema semidefinido e dá-nos um minorante para pmin .

João Gouveia (UC ) Programação semidefinida 23 / 25


Otimização 2

E se quisermos realmente o mínimo e não um minorante?

João Gouveia (UC ) Programação semidefinida 24 / 25


Otimização 2

E se quisermos realmente o mínimo e não um minorante?

Otimização polinomial aproximada


psdq = max λ tal que p(x) − λ é sdq.

João Gouveia (UC ) Programação semidefinida 24 / 25


Otimização 2

E se quisermos realmente o mínimo e não um minorante?

Otimização polinomial aproximada


k
psdq = max λ tal que (x12 + x22 + · · · xn2 )k p(x) − λ é sdq.

João Gouveia (UC ) Programação semidefinida 24 / 25


Otimização 2

E se quisermos realmente o mínimo e não um minorante?

Otimização polinomial aproximada


k
psdq = max λ tal que (x12 + x22 + · · · xn2 )k p(x) − λ é sdq.

Usando geometria algébrica real (Positivstellensatz) podemos provar


que
k
lim psdq = pmin
k →∞

João Gouveia (UC ) Programação semidefinida 24 / 25


Otimização 2

E se quisermos realmente o mínimo e não um minorante?

Otimização polinomial aproximada


k
psdq = max λ tal que (x12 + x22 + · · · xn2 )k p(x) − λ é sdq.

Usando geometria algébrica real (Positivstellensatz) podemos provar


que
k
lim psdq = pmin
k →∞

Não é difícil adaptar os métodos para trabalhar com desigualdades e


equações polinomiais. Lasserre (2001) e Parrilo (2000) popularizaram
esta ideia.

João Gouveia (UC ) Programação semidefinida 24 / 25


Fim

Obrigado pela vossa atenção

jgouveia@mat.uc.pt

João Gouveia (UC ) Programação semidefinida 25 / 25

Você também pode gostar