• Nenhum resultado encontrado

UM ALGORITMO PARA UM PROBLEMA DE ESCALONAMENTO COM TAREFAS DE TEMPOS UNITÁRIOS

N/A
N/A
Protected

Academic year: 2021

Share "UM ALGORITMO PARA UM PROBLEMA DE ESCALONAMENTO COM TAREFAS DE TEMPOS UNITÁRIOS"

Copied!
10
0
0

Texto

(1)

UM ALGORITMO PARA UM PROBLEMA DE ESCALONAMENTO COM TAREFAS DE TEMPOS UNITÁRIOS

Mitre Costa Dourado

DEMAT-ICE - Universidade Federal Rural do Rio de Janeiro e NCE – UFRJ [email protected]

Rosiane de Freitas Rodrigues1

DCC-ICE - Universidade Federal do Amazonas e COPPE – UFRJ [email protected]

Jayme Luiz Szwarcfiter2

Instituto de Matemática, NCE e COPPE - Universidade Federal do Rio de Janeiro [email protected]

Caixa Postal 2324 20010-974 Rio de Janeiro, RJ, Brasil Phone:+55-21-25983247

Resumo:

Este trabalho apresenta um algoritmo para determinar escalonamentos que minimizem a soma total dos jobs tardios ponderados, dados n jobs de tempos unitários, cada um tendo uma data de disponibilidade, uma data de término sugerida e um peso, além de também serem dadas m máquinas idênticas e paralelas. A

complexidade do algoritmo proposto é de O((n2log m)/m). O melhor algoritmo existente até então para o problema possui complexidade O(n3) e emprega técnicas de fluxo em redes. Nosso método se baseia em uma caracterização para escalonamentos deste tipo e emprega ferramentas de teoria dos grafos. Palavras-

chave: algoritmos, escalonamento teórico, jobs tardios, máquinas paralelas, tempos unitários, teoria dos grafos.

Palavras-chave: algoritmos, escalonamento teórico, máquinas paralelas, tarefas tardias, tempos unitários, teoria dos grafos.

Abstract:

This work presents an algorithm to determine schedules that minimizing the weighted number of tardy jobs, given a set of n unit time jobs, each one having a release date, a due date and a weight, besides of a set of m identical and parallel machines. The complexity of the proposed algorithm is O((n2log m)/m). The best previous algorithm for this problem has complexity O(n3), and employs network flow techniques. Our

method is based on a characterization for schedules of this type and employs graph theoretic tools.

Keywords: algorithms, graph theory, parallel machines, scheduling theory, tardy jobs, unit time jobs.

1 Parcialmente suportada pela Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - CAPES, Brasil.

2 Parcialmente suportado pelo Conselho Nacional de Desenvolvimento Científico e Tecnológico - CNPq e pela Fundação de Amparo à Pesquisa do Estado do Rio de Janeiro - FAPERJ, Brasil.

(2)

1. Introdução

O problema de escalonamento abordado neste artigo é o P | pj=1; rj| ∑wjUj, segundo a notação de 3-campos proposta por Graham et al (1979). Ou seja, considera-se J=J1 ,..., Jn um conjunto de n tarefas independentes, onde cada tarefa Jj tem um tempo de processamento unitário pj =1, uma data de disponibilidade (release date) rj, uma data de término esperada e não obrigatória (due date) dj e um peso (weight) wj. Tais tarefas devem ser executadas em m, 1≤m≤n, máquinas ou processadores idênticos e paralelos P=P1 ,..., Pm. Neste trabalho, todas as datas de disponibilidade e término das tarefas são números inteiros não negativos, enquanto os pesos são números reais positivos. Cada processador pode processar no máximo uma tarefa a cada intervalo de tempo e cada tarefa, por sua vez, só pode ser processada em uma máquina por vez.

Sendo assim, um escalonamento para (J,P) é uma função injetora J→(Z,P), a qual assinala para cada tarefa Jj ∈J um inteiro sj ∈Ζ+, chamado tempo inicial (start time) de Jj e uma máquina específica Pi ∈P. Pode ser dito, então, que a tarefa Jj foi escalonada no tempo sj

ocupando o processador Pi. Denota-se ci = si+pi como sendo o tempo de completude (completion time) da tarefa Jj, que no caso considerado será sempre ci = s +1.

Se uma tarefa Jj for tardia (tardy ou late), cj > dj, uma penalidade unitária, Uj =1, é atribuída. Caso contrário, se uma tarefa Jj for executada antecipadamente ou em tempo (early ou on-time), cj ≤ dj, então uma penalidade nula, Uj =0, é atribuída. O problema, então, consiste em escalonar todas as tarefas de forma a minimizar a soma total das tarefas tardias ponderadas, ou seja, minimizar ∑wjUj.

Um escalonamento de tarefas de tempos unitários consiste em um conjunto de pares de inteiros (t,i), chamados de células de tempo, 1 ≤ t ≤ n e 1 ≤ i ≤ m. A célula de tempo (t,i) é dita usada quando existe alguma tarefa escalonada para iniciar no tempo t na máquina Pi, caso contrário, a célula de tempo é dita desocupada ou disponível. Um escalonamento define uma partição j=S∪T, sendo S o conjunto de tarefas em tempo e T o conjunto de tarefas tardias. Um intervalo I=[t1, t2] de S é o conjunto de células de tempo contendo as tarefas Jj ∈S satisfazendo t1≤sj<t2. Dizemos que I é cheio se não contém células de tempo disponíveis. Neste caso, I contém m(t2-t1) tarefas. Para Jj ∈J, Ij=[sj, tj] é o intervalo de Jj. Neste trabalho, usa-se a mesma notação, I=[t1, t2], para representar o intervalo de tempo t, t1≤t<t2, sem nenhuma ambigüidade. Denota-se por J(I) o conjunto de tarefas Jt ∈J satisfazendo st ∈I.

Recentemente, muitos resultados têm sido publicados sobre escalonamento em máquinas idênticas e paralelas com tarefas de tempos de processamento iguais, onde tarefas UET (unit execution times) constituem uma classe interessante de problemas de escalonamento. Deseja-se abordar tal subclasse considerando o problema o P | pj=1; rj| ∑wjUj. Para este problema, o melhor algoritmo conhecido aplica técnicas de fluxo em redes tendo complexidade de tempo O(n3) (Leung (2004) e Brucker e Knust (2007)). Neste artigo, será apresentado um algoritmo que utiliza conceitos de teoria dos grafos e baseia-se em uma caracterização feita por Dourado et al (2006), fornecendo um limite superior melhor, com complexidade de tempo O((n2log m)/m). Brucker et al (2003) mostrou que preempção é redundante para P | pj=1; rj; pmtn| ∑wjUj e, por este resultado, o algoritmo aqui apresentado também fornece a melhor complexidade conhecida para o problema. Para outros problemas relacionados, Brucker e Kravchenko (2006) resolveram o problema P | pj=1 | ∑wjUj em O(nlogn) e mostraram sua equivalência com o problema P | pj=p; rj| ∑wjUj. O algoritmo apresentado também resolve ambos problemas em O(nlogn).

Baptiste (1999) descreve um algoritmo para 1 | pj=p; rj| ∑wjUj , usando Programação Dinâmica, o qual requer um tempo de O(n7). Baptiste et al (2004) resolveram o problema P | pj=p; rj| ∑wjUj, com complexidade O(n6m+1), enquanto Chrobak et al (2006) resolveu o problema 1 | pj=p; rj |

∑Uj em um tempo de O(n5), ambos trabalhos também usando Programação Dinâmica. Para

(3)

outros resultados em escalonamento de tempos iguais buscar Leung (2004) e Brucker e Knust (2007).

Este artigo está estruturado da seguinte forma. Nesta primeira seção, apresenta-se as definições básicas do problema de escalonamento abordado, bem como uma revisão da literatura.

Na segunda seção, aborda-se os fundamentos necessários para o entendimento do algoritmo proposto, incluindo uma caracterização na qual o mesmo se baseia. Na terceira seção, encontra-se a descrição do algoritmo, com sua prova de correção e análise de complexidade. Por fim, na quarta seção, apresenta-se uma análise comparativa da literatura e os resultados obtidos até então.

2. Fundamentos do Algoritmo

Alguns conceitos úteis em teoria dos grafos serão apresentados em seguida. Denota-se um grafo direcionado ou digrafo por G=(V,E), onde V é o conjunto de vértices e E o conjunto de arestas.

Usa-se (vi vj) para representar uma aresta direcionada de G, de vi para vj. Um caminho em um digrafo G é uma sequência de vértices distintos v1 , ..., vk, tal que, (vi, vi+1)∈E(G), para i<k. Neste caso, se diz que v1 alcança vk. Dois subgrafos com o mesmo conjunto de vértices são equivalentes se o conjunto de vértices alcançados por cada vértice for o mesmo em ambos digrafos. Um ciclo é uma sequência de vértices v1 , ..., vk, vk+1 onde v1 , ..., vk é um caminho, (vk

,vk+1)∈E(G) e v1= vk+1, k>1. Um digrafo é acíclico se contém ciclos. Dado um digrafo acíclico G, sua redução transitiva é o grafo mínimo equivalente de G. O grau de saída e o grau de entrada de um vértice u de G são o número de arestas (v,w)∈E(G) tal que u=v e u=w, respectivamente.

Um vértice é uma fonte se seu grau de entrada for zero.

Associa-se um grafo direcionado G(S) ao conjunto de tarefas em tempo, chamado de digrafo em tempo de S, e definido como segue. Cada vértice vt∈V(G) corresponde ao tempo t, onde existe alguma célula de tempo usada (t,i), para alguma máquina Pi. Existe uma aresta direcionada de vt a vi precisamente quando existe Jk ∈S, onde sk =1 e satisfazendo:

(i) t < i e dk < i ou (ii) t > i e rk ≥ i.

Neste caso, Jk é também uma tarefa em tempo para o tempo t. O digrafo em tempo de S é utilizado para trocar tarefas de S com tarefas de T, como segue. Seja Jt ∈S e Jk ∈T. Um caminho de trocas R para Jt ,Jk é um caminho de vl a vt em R para algum l∈ Ik. Para cada vi ∈R, i≠t, seja vi’

o vértice seguinte ao vértice vi em R. Define-se um escalonamento (S’,T’) como T’=(T\Jk)∪Jt, enquanto S’ é obtido a partir de S através das seguintes operações:

(i) Remova Jt de S.

(ii) Iterativamente, para cada vi ∈R, i≠t, escolha um tarefa Jq com tempo de início j, com a propriedade de ser também em tempo para j’. Então, mova Jq para o tempo j’.

(iii) Escalone Jk para o tempo l.

Dizemos que (S’,T’) é a substituição de Jt por Jk em (S,T), e que Jk substitui Jt em S. A Figura 1 ilustra um escalonamento (S,T), um digrafo em tempo G(S), um caminho de trocas R para Jt ∈S e Jk ∈T , e, um escalonamento substituto (S’,T’).

(4)

Figura 1: (a) Instância de um problema de escalonamento; (b) Escalonamento (S,T); (c) Digrafo em tempo G(S); (d) Um caminho de trocas em G(S), com a substituição da tarefa J3 pela tarefa J9 em (S,T); (e)

Escalonamento substituto (S’,T’).

O lema seguinte é claro.

LEMA 1: Seja um escalonamento factível e (S’,T’) a troca de Jt ∈S por Jk ∈T em (S,T). Então, todas as tarefas de S’ estão em tempo.

O intervalo estendido (range) Ij* da tarefa Jj∈J em S é o intervalo de tempo [t1, t2], tal que t1 (respectivamente t2) é o mínimo (máximo) tempo t onde vt ∈G(S) é alcançável a partir de vk

em G(S), para algum k∈ Ij. No exemplo da Figura 1, o intervalo estendido da tarefa J2 é [1,5].

2.1 O Digrafo GLR(S)

O digrafo em tempo G(S) apesar de representar e auxiliar na busca por escalonamentos ótimos, ainda possui muitas arestas, O(|S2|). Visando uma implementação mais eficiente do algoritmo a ser descrito, será apresentado nesta seção um grafo equivalente ao digrafo em tempo G(S), possuindo um número linear O(|S|) de arestas.

Será provado agora que G(S) admite um digrafo equivalente GLR(S), com O(|S|) arestas.

Desta forma, o digrafo GLR(S) pode ser descrito da seguinte forma. Primeiro, considera-se uma bipartição das arestas de G(S) em dois conjuntos distintos. Dizemos que uma aresta (vi, vj) de G(S) é uma aresta à esquerda, quando i<j. Caso contrário, i>j e (vi, vj) é uma aresta à direita.

Denota-se por GL(S) e GR(S),os subgrafos de G(S) contendo as arestas à esquerda e à direita, respectivamente. Claramente, GL(S) e GR(S) são ambos acíclicos. Denota-se por GLr(S) e GRr(S) a redução transitiva de GL(S) e GR(S), respectivamente. Finalmente, define-se o digrafo esquerda-direita GLR(S), formado pela união das arestas de GLr(S) e GRr(S). A Figura 2(a) ilustra a

(5)

geração do digrafo esquerda-direita. Um exemplo de GLR(S), correspondendo ao escalonamento da Figura 1(c), aparece na Figura 2(b).

Figura 2: (a) Geração do digrafo esquerda-direita GLR(S); (b) Exemplo de GLR(S) baseado no escalonamento da Figura 1(c).

O lema a seguir mostra que fato os digrafos G(S) e GLR(S) são equivalentes.

Lema 2: G(S) e GLR(S) são digrafos .quivalentes

Prova: por construção, GLR(S) é um subdigrafo gerador de G(S). Sendo assim, é suficiente provar que se G(S) contém um caminho R entre dois vértices específicos, então GLR(S) também deve conter. Constrói-se, então, um caminho em GLR(S). Sempre que R contiver uma aresta (vi, vj) a qual não pertença a GLR(S), faz-se o seguinte: se i< j então troque a aresta (vi, vj) pelo caminho de vi a vj em GRr(S), caso contrário troque-a pelo caminho de vi a vj em GLr(S). Uma vez que GLR(S) é a união de GLr(S) e GRr(S), ambos caminhos estão contidos em GLR(S).

Conseqüentemente, GLR(S) tem um caminho entre dois vértices, sempre que G(S) tiver.

O lema a seguir prova que GLR(S) é um grafo esparso.

Lema 3: GLR(S) contém O(|S|) arestas.

Prova: primeiro, será mostrado que GLr(S) contém O(|S|) arestas. Será mostrado, então, que GLr(S) é de fato uma floresta enraizada direcionada, ou seja, cada vértice de GLr(S) tem grau de entrada no máximo igual a um. Supondo que esta afirmação seja falsa, e seja vi um vértice de grau de entrada maior do que um. Então, GLr(S) contém vértices distintos vj e vk, com arestas (vj, vi) e (vk, vi). Sem perda de generalidade, seja j<k. Isto implica que (vk, vj) deve ser uma aresta de

(6)

G(S). Isto contradiz o fato de GLr(S) ser uma redução transitiva de GL(S). Portanto, GLr(S) tem menos do que |S| arestas, e vale similarmente para GRr(S). Consequentemente, GLR(S) tem menos do que 2|S| arestas.

Introduzidos estes conceitos e definições, serão apresentados os enunciados dos Teoremas e Corolários da caracterização proposta por Dourado et al (2006), nos quais o algoritmo a ser apresentado na próxima seção se baseia.

A caracterização foi feita em termos das condições necessária e suficiente para se garantir a otimalidade do problema. Sendo assim, o Teorema 1 caracteriza escalonamentos factíveis que minimizam a soma total das tarefas tardias ponderadas.

TEOREMA 1: Seja (S,T) um escalonamento, onde S é o conjunto de tarefas escalonadas e T o conjunto de tarefas tardias. Então (S,T) será ótimo se e somente se, para qualquer JjT:

(i) Ij* for cheio e, (ii) JkJ(Ij*)⇒ wk ≥ wj.

Os corolários a seguir são conseqüências diretas da prova do Teorema 1 anterior. O Corolário 1 caracteriza escalonamentos que possuem um número mínimo de tarefas tardios (sem ponderação). O Corolário 2 enuncia uma propriedade mais forte, assegurando que o multiconjunto formado pelos pesos das tarefas tardias de qualquer escalonamento ótimo é invariante.

COROLÁRIO 1: Seja (S,T) um escalonamento, onde S é o conjunto de tarefas escalonadas e T o conjunto de tarefas tardias. Então |T| será mínimo se e somente se, Ij* for cheio para qualquer JjT.

COROLÁRIO 2: Seja T,T’ dois conjuntos de tarefas tardias de dois diferentes escalonamentos ótimos (que minimizam

wjUj), para um dado conjunto de tarefas. Sejam w(T),w(T’) multiconjuntos definidos pelos pesos das tarefas de T,T’, respectivamente. Então, w(T)=w(T’).

A próxima seção apresenta o algoritmo desenvolvido.

3. O Algoritmo

Nesta seção é apresentado um algoritmo polinomial para a geração de escalonamentos ótimos para o problema P | pj=1; rj| ∑wjUj, dado como instância um conjunto de tarefas J=J1 ,..., Jn tendo uma data de disponibilidade rj, uma data de término dj e um peso wj, além de um conjunto de |P|=m máquinas idênticas e paralelas.

O Algoritmo 1 é apresentado abaixo.

ALGORITMO 1 – Gera escalonamento min ∑wjUj

Entrada: n tarefas, cada uma com data de início, data de término e peso.

Saída: um escalonamento ótimo (S,T).

1. Construir um escalonamento guloso EDD para J; 2. Construir o digrafo esquerda-direita GLR(S);

3. Para cada tarefa JjT faça Achar o intervalo estendido Ij*;

Escolher a tarefa JkJ(Ij*) tendo o menor wk e se wk <wj então Gerar (S’,T’), pela substituição de Jk por Jj em (S,T);

Fim.

O lema 4 a seguir prova a corretude do Algoritmo 1.

(7)

LEMA 4: O algoritmo-1 é correto.

Prova:

Seja (S0,T0) o escalonamento construído pelo passo 1 e (Si,Ti) o escalonamento obtido depois da ith iteração do passo 3, i=1,...,|T|. Será provado que cada JjT|T| satisfaz as condições (i) e (ii) do teorema principal, o Teorema 1. A prova para a condição (i) é similar. Para a condição (ii), será mostrado que não existe tarefa JkIj*(S|T|) tal que wk<wj, para cada JjT|T| .

Seja i≥1 a iteração na qual JjT0 é considerada pelo algoritmo. Desde que nenhuma tarefa tardia pode substituir uma outra tarefa tardia na iteração do passo 3, conclui-se que JjTi para qualquer l≤i. Considera-se, então, as seguintes alternativas:

Caso 1: ¬∃JkIj*(Si-1), onde wk<wj.

Nesta situação, o algoritmo assegura que JjTi. Além disso, JjTl, para qualquer l≥i. Isto prova que ¬∃JaIj*(S|T|) satisfazendo wa<wj, o que garante que a condição (ii) seja satisfeita por Jj no final do algoritmo. Pelo contrário, supondo que exista tal tarefa Ja e que ainda possua peso mínimo em Ij*(S|T|). Primeiro, observa-se que Ij*(Sq) ⊆ Ij*(Sq-1), para qualquer iteração q>i.

Conseqüentemente, JaIj*(Si-1), com wa<wj, o que é uma contradição. Logo, Jj satisfaz a condição (ii).

Caso 2: ∃JkIj*(Si-1), onde wk<wj.

Sem perda de generalidade, seleciona-se Jk com peso mínimo. O algoritmo, então, garante que Jj substitui Jk em Si, ou seja, JkTi e JjSi. Novamente, como nenhuma tarefa tardia substitui uma outra tarefa tardia, sabe-se que JjTl, para qualquer l≥i. Também, Ik*(Sl) ⊆ Il*(Sl-1),

) ( )

( * 1

* lk l

k S I S

I . Conseqüentemente, a existência de uma tarefa JaIk*(S|T|) satisfazendo wa<wk implicaria em JaIk*(Si-1). Por outro lado, sabe-se que Ik*(Si-1) ⊆ Ij*(Si-1), devido ao fato de Jk ter substituído Jj. Desta forma, JaIj*(Si-1). Desde que wa<wj, a última situação significa que o algoritmo teria escolhido Ja ao invés de Jk, para substituir Jj na iteração i. Sendo assim, nenhuma tarefa JaIk*(S|T|) satisfazendo wa<wk pode existir, o que significa que JkT|T| satisfazendo a condição (ii).

Logo, cada tarefa JjT|T| é tal que wj≤wk, para cada JkIj*(S|T|), implicando no fato de que o Algoritmo 1 está correto.

As subseções seguintes detalham cada passo do algoritmo.

3.1. Construção de um escalonamento guloso EDD

Primeiramente é gerado um escalonamento factível a partir: da aplicação da regra EDD (Earliest Due Date first), onde as tarefas são consideradas a partir da ordem não-decrescente de suas datas de término; seguido de um procedimento guloso para o escalonamento das tarefas ordenadas, o que significa que as tarefas são escalonadas o mais cedo possível em S.

O Teorema 2 garante que tal escalonamento guloso EDD minimiza ∑wjUj. TEOREMA 2: Seja (S,T) um escalonamento guloso EDD. Então, Ij* é cheio para cada JjT.

Passo 1: Construir um escalonamento guloso EDD para J.

Neste primeiro passo, primeiramente as tarefas são ordenados segundo os valores de suas datas de término (due dates). Isto custa O(nlogn), onde n é o número de tarefas.

(8)

Em seguida, as tarefas são escalonados através de um processo guloso, seguindo a ordem EDD pré-estabelecida das tarefas. Neste caso, como tem-se n tarefas e m máquinas, então, o tempo de processamento para escalonar todas as tarefas será O(n/m).

O passo 1, portanto, custa O(nlogn).

3.2. Construção do Digrafo Em-Tempo G(S)

Esta subseção apresenta a construção do grafo direcionado Em-Tempo G(S), elaborado de tal forma a tornar eficiente a busca e conseqüente troca de tarefas no escalonamento.

Passo 2: Construir o grafo direcionado GLR(S).

A complexidade de construção fica em O(S), como desejado. Como o digrafo GLR(S) é obtido através da união dos digrafos GRr(S) e GLr(S) , o Algoritmo 2 a seguir, apresenta o processo de construção computacional do digrafo GRr(S) .

ALGORITMO 2 – Construção do GRr(S) 1. Para cada i de 1 a t

k:=i-1;

Enquanto k>li

Incluir aresta (vi,vk) no digrafo GRr(S) . k':=k; k:=fonte(k);

Remover nó k de fonte; Fim.

O passo 2, portanto, custa O(|S|).

3.3. Iteração para cada tarefa tardia

Esta subseção apresenta o passo iterativo onde, para cada tarefa tardia resultante do escalonamento guloso EDD, verifica-se se a mesma pode ser inserida no escalonamento com algum ganho (decréscimo de valor) na função objetivo. Observa-se que use-se o digrafo do passo 2 para que este processo seja o mais eficiente possível, tal como será descrito a seguir.

Passo 3: Para cada tarefa Jj∈T faça:

Neste caso, no pior caso haverá O(|T|) iterações, cada uma com os seguintes custos. Determinar a tarefa de menor peso do intervalo estendido pode ser feito em O(logm), uma vez que pode ser mantido um heap para cada unidade de tempo (vértice) que possua o menor peso dentre todos os tarefas escalonados naquela unidade de tempo. Realizar as substituições sucessivas de tarefas tem o custo do comprimento do maior caminho possível no grafo, que é O(|S|/m). Estes procedimentos podem ser feitos através de uma busca em profundidade (ou em largura) modificada, de tal forma a se guardar os vértices do caminho do vértice de menor peso, além dos vértices do caminho corrente da busca. Vale observar que são necessários mais dois heaps para cada unidade de tempo do escalonamento: um para fornecer a menor data de disponibilidade dentre todas as tarefas escalonadas naquele tempo; e, outro para fornecer a menor data de término dentre todas as tarefas escalonadas naquele tempo. Cada heap custa O(logm) para ser mantido.

Desta forma, o custo do passo 3 será O(|T|(|S|/m)logm).

A complexidade de tempo total do Algoritmo 1, então, será O(|T|(|S|/m)logm), sendo que para um único processador, m=1, a complexidade é O(|T||S|) ou O(n2).

(9)

4. Considerações Finais

Recentemente, muitos resultados têm sido publicados sobre escalonamento UET.

Especificamente sobre problemas UET que envolvem a função de minimizar a soma total das tarefas tardias ponderadas, os melhores resultados encontrados na literatura são apresentados agora.

A tabela 1 a seguir apresenta um quadro resumido dos melhores resultados para os problemas de escalonamento em análise.

Tabela 1 – Resumo dos resultados de complexidade.

Problema Literatura Resultados propostos P | pj=1| ∑wjUj

P | pj=p | ∑wjUj O(nlogn)

Brucker e Kravchenko (2006) O(nlogn) 1 | pj=1; rj| ∑wjUj O(n3)

Assignment problem

O(n2)

P | pj=1; rj| ∑wjUj O(n3)

Network flow algorithm

O((n2log m)/m)

P | pj=1;rj;pmtn| ∑wjUj preempção é redundante

Brucker et al (2003) O((n2log m)/m)

Para o problema P | pj=1; rj| ∑wjUj, o melhor algoritmo conhecido aplica técnicas de fluxo em redes tendo complexidade de tempo O(n3) (Leung (2004) e Brucker e Knust (2007)). O algoritmo apresentado neste artigo utiliza conceitos de teoria dos grafos e baseia-se em uma caracterização feita por Dourado et al (2006), resultando em uma complexidade de tempo O((n2log m)/m). Para o caso particular de uma máquina, 1 | pj=1; rj| ∑wjUj, a melhor complexidade também era O(n3), obtida através da modelagem do problema pelo assignment problem. O algoritmo aqui proposto resolve este problema em tempo O(n2).

Brucker et al (2003) mostrou que preempção é redundante para P | pj=1; rj; pmtn| ∑wjUj e, por este resultado, o algoritmo aqui apresentado também fornece a melhor complexidade conhecida para o problema. Para outros problemas relacionados, Brucker e Kravchenko (2006) resolveram o problema P | pj=1| ∑wjUj em O(nlogn) e mostraram sua equivalência com o problema P | pj=p | ∑wjUj. O algoritmo apresentado também resolve ambos problemas em O(nlogn).

Referências

Baptiste, P. Brucker, P., Knust, S., Timbkovsky, V. (2004). Ten notes on equal-processing-time scheduling: at the frontiers of solvability in polynomial time, Quaterly Journal of the Belgian, French and Italian Operations Research Societies – 4OR, Springer-Verlag, 2: 111-127.

Baptiste, P. (1999). Polynomial time algorithms for minimizing the weighted number of late tarefas on a single machine when processing times are equal, Journal of Scheduling, 2:245-252.

Brucker, P., Knust, S. (2007). Complexity Results for Scheduling Problems, http://www.mathematik.uni-osnabrueck.de/research/OR/class.

Brucker, P., Kravchenko, S. (2006). Scheduling Equal Processing Time Tarefas to Minimize the Weighted Number of Late Tarefas, Journal of Mathematical Modelling and Algorithms.

Springer.

(10)

Brucker, P., Heitmann, S., Hurink, J. (2003). How useful are preemptive schedules, in Operational Research Letters, 31:129-136.

Graham, R., Lawler, E., Lenstra, J., Rinnooy-Kan, A. (1979). Optimization and Approximation in Deterministic Sequencing and Scheduling: a Survey, Annals of Discrete Mathematics, 5: 287- 326.

Lawler, E., Moore, J. (1969). A functional equation and its application to resource allocation and sequencing problems, Management Science, 16: 77-84.

Leung, J. (2004). Handbook of Scheduling: algorithms, models, and performance analysis, Chapman & Hall / CRS Press.

Referências

Documentos relacionados

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Incidirei, em particular, sobre a noção de cuidado, estruturando o texto em duas partes: a primeira será uma breve explicitação da noção de cuidado em Martin Heidegger (o cuidado

O problema resultante P CER ´ e considerado a forma extensiva do programa estoc´ astico, pois explicita as vari´ aveis de decis˜ ao de segundo est´ agio para todos os cen´

      II  ­  a  fusão  da  Companhia  de  Financiamento  da  Produção,  da  Companhia  Brasileira  de  Alimentos,  e  da Companhia  Brasileira  de 

Como pontos fortes, destacam-se a existência de iniciativas já em- preendidas em torno da aprovação de um Código de classificação e uma Ta- bela de temporalidade e destinação

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

A nutrição enteral (NE), segundo o Ministério da Saúde do Brasil, designa todo e qualquer “alimento para fins especiais, com ingestão controlada de nutrientes, na forma isolada