• Sonuç bulunamadı

Kişilik Haklarının Korunmasına Yönelik MK (Medeni Kanun)’da Yer Alan

D. KİŞİSEL VERİLERLE İLGİLİ ANAYASA VE KANUNLARIMIZDA YER

2. Kişilik Haklarının Korunmasına Yönelik MK (Medeni Kanun)’da Yer Alan

na estrutura F ree. Em um método de seleção aleatório, uma cor valida é selecionada aleatoriamente a partir do conjunto de cores disponíveis.

Para a seleção de arestas, é definido o conceito de seleção lexicográfica. Neste

método de seleção, todas as arestas não coloridas incidentes no vértice vi são proces-

sadas antes das arestas não coloridas incidentes no vértice vi+1. Além disso, as arestas

também podem ser processadas em ordem aleatória.

Combinando estas duas diferentes possibilidades de estratégias de execução, sur- gem quatro diferentes versões para o algoritmo proposto:

– PCAL: Seleção de cores pela primeira disponível e seleção de arestas em ordem lexicográfica.

– PCAA: Seleção de cores pela primeira disponível e seleção aleatória de arestas. – CAAL: Escolha aleatória de cores e seleção de arestas em ordem lexicográfica. – CAAA: Escolha aleatória de cores e arestas.

Diversas outras estratégias de escolhas de cores, arestas e vértices foram testadas, tais como: ordenar os vértices de forma a selecionar primeiramente as arestas daqueles de maior grau, ordenar os vértices de forma a selecionar primeiramente as arestas daqueles de menor grau, escolher a cor que aparece com a menor frequência no grafo para colorir a aresta, escolher a cor que aparece com a maior frequência no grafo e por fim escolher as arestas do grafo que incidem nos vértices com a maior quantidade de arestas incidentes descoloridas. No entanto, nenhuma dessas estratégias se mostraram tão eficientes quanto as que estão sendo apresentadas neste trabalho. A apresentação de tais resultados foi omitida com o objetivo de focar o texto nos resultados obtidos com maior relevância.

No Capítulo 4 são apresentados os resultados empíricos da análise das estratégias de execução propostas com o intuito de determinar aquela com o melhor desempenho.

3.4

Pré-processamento

Com o objetivo de encontrar rapidamente uma cor válida para as arestas do grafo, foram propostas estratégias de pré-processamento que verificam todas as arestas do grafo de entrada G na tentativa de determinar rapidamente uma cor válida para cada uma delas. O grafo de saída G é um grafo parcialmente colorido que será utilizado como entrada para os algoritmos de coloração de arestas apresentados nesta dissertação.

Este pré-processamento é uma função hash que determina uma cor para uma dada aresta utilizando a soma dos índices dos vértices conectados por ela, calculada

26 Capítulo 3. Algoritmo para Coloração de Arestas

em módulo ∆ + 1. Por exemplo, para determinar uma cor de uma aresta e(vi, vj)

calcula-se o resultado de (i + j) mod ∆ + 1 e então a cor α(i+j) mod ∆+1 será utilizada

para colorir tal aresta.

Caso o grafo em questão possua um vértice universal, é possível garantir que as arestas do mesmo podem ser coloridas, utilizando no máximo ∆ + 1 cores, com com- plexidade Θ(m). Esta afirmação é consequência da proposição apresentada a seguir.

Proposição. Seja o conjunto de vértices V (G) = {vo, v1, ..., vn−1} e o conjunto

de cores C = {α0, α1, ..., α∆}. Se G contém um vértice universal, é possível colorir

qualquer aresta e(vi, vj) com a cor α(i+j)mod(∆+1) e assim obter uma coloração própria

válida utilizando não mais que ∆ + 1 cores.

Prova. Sejam vi, vj e vk três vértices distintos de um grafo que possui um vértice

universal, tais que vi é adjacente a vj e a vk. Assumindo, por absurdo, que as arestas

(vi, vj) e (vi, vk) sejam coloridas com a mesma cor, gerando uma coloração inválida,

temos que:

(i + j)mod(∆ + 1) = (i + k)mod(∆ + 1)

(i + j)≡ (i + k)mod(∆ + 1)

j ≡ k mod(∆ + 1)

onde a última equação afirma que j e k devem ter o mesmo resto da divisão por ∆ + 1. Uma vez que 0 ≤ j, k < n, onde n = ∆ + 1 devido à presença de um vértice universal, implica que j = k, o que é impossível uma vez que os vértices em questão são distintos.

Portanto, também é impossível que cores iguais sejam atribuídas às arestas (vi, vj) e

(vi, vk). 

A proposição apresentada pode ser utilizada na tentativa de colorir a maior quan- tidade possível de arestas de um grafo. Se este grafo não possui um vértice universal, a proposição falha para algumas arestas e, assim, as arestas que não puderam ser coloridas pelo pré-processamento serão coloridas pelo algoritmo de coloração. Neste trabalho, o pré-processamento é aplicado de duas formas diferentes:

Pré-processamento a priori : Nesta abordagem, o algoritmo de pré-processamento

tenta colorir cada aresta (vi, vj) com a cor α(i+j)mod(∆+1). Se um conflito ocorre (porque

outra aresta incidente em vi ou em vj já foi colorida com a mesma cor), a aresta não

colorida (vi, vj) é armazenada na lista EdgeList(E) para ser posteriormente processada

pelo algoritmo principal. O Algoritmo 3 descreve os passos do pré-processamento a priori.

O passo 1 do Algoritmo 3, mostra que o procedimento deve ser aplicado em todas

3.4. Pré-processamento 27

Algoritmo 3: Utilizando o pré-processamento a priori.

1 para cada e(vi, vj)∈ Edge(G) faça

2 α← (i + j)mod(∆ + 1)

3 se α∈ F ree(vi)∩ F ree(vj) então

4 Colorir a aresta e(vi, vj) utilizando a cor α

5 senão

6 EdgeList(E)← EdgeList(E) + e

7 Aplique o algoritmo de coloração de arestas utilizando o grafo parcialmente

colorido G e a lista EdgeList(E) como entrada

é dado por (i + j)mod(∆ + 1). No passo 3, verifica-se a disponibilidade dessa cor nos

vértices vi e vj. Caso α esteja disponível nos dois vértices, no passo 4, a aresta e(vi, vj)

será colorida com a cor α. Caso contrário, a aresta e será armazenada em uma lista de arestas não coloridas, EdgeList(E), de acordo com os passos 5 e 6. No passo 7, o algoritmo de coloração de arestas é utilizado para colorir cada uma das arestas da lista EdgeList(E), com o objetivo de obter uma coloração válida de G.

No Algoritmo 3, a ordem com que as arestas são fornecidas trata-se apenas de um detalhe de implementação. Qualquer uma das ordens de seleção de arestas apresentadas na Seção 3.3 podem ser adotadas. No entanto, a estratégia a priori não garante que as arestas serão coloridas na mesma ordem em que foram passadas para o algoritmo de pré-processamento, haja visto que algumas arestas podem ser armazenadas para serem coloridas posteriormente pelo algoritmo de coloração de arestas.

Pré-processamento embutido: Nesta abordagem, o algoritmo de pré-processamento

tenta colorir cada aresta (vi, vj) com a cor α(i+j)mod(∆+1). Se um conflito ocorre, o

algoritmo de coloração de arestas é chamado imediatamente para resolvê-lo. Neste caso, o processamento embutido e o algoritmo principal de coloração de arestas trabalham juntos. O Algoritmo 4 descreve os passos do pré-processamento embutido.

Algoritmo 4: Utilizando o pré-processamento embutido.

1 para cada e(vi, vj)∈ Edge(G) faça

2 α = (i + j)mod(∆ + 1)

3 se α∈ F ree(vi)∩ F ree(vj) então

4 Colorir a aresta e(vi, vj) utilizando a cor α

5 senão

6 Aplique o algoritmo de coloração de arestas em e

28 Capítulo 3. Algoritmo para Coloração de Arestas

Algoritmo 3. No entanto, no passo 5, ao invés de armazenar a aresta não colorida, o

algoritmo de coloração de arestas é aplicado na aresta e(vi, vj), sempre garantindo uma

coloração parcial do grafo G, até que todas as arestas sejam coloridas.

Neste algoritmo, diferentemente do Algoritmo 3, o algoritmo de pré- processamento, juntamente com o algoritmo de coloração de arestas, colore as arestas de G na ordem em que são fornecidas. Assim, as estrategias de execução para a ordem de processamento das arestas, definidas na Seção 3.3, são respeitadas.