Estrutura da Apresentação

Tamanho: px
Começar a partir da página:

Download "Estrutura da Apresentação"

Transcrição

1 Programação em Lógica com Restrições utilizando o SICStus Prolog Luís Paulo Reis Docente da FEUP Investigador do LIACC NIAD&R Gab. I121 / I131 Estrutura da Apresentação PLR Domínios Interface do solver CLP(FD) do SICStus Resolução de CSPs (Domínios Finitos) Restrições Disponíveis no SICStus : Enumeração e Optimização 2 PLR Domínios Booleanos e Reais PLR Domínios Domínios Finitos 3 Boleanos: Esquema clp(b) use_module(library(clpb)). Reais e Racionais Esquema clp(q,r) use_module(library(clpq)). use_module(library(clpr)). Não são abordados na disciplina de PL! 4 Esquema clp(fd). Solver clp(fd) é um instância do esquema geral de PLR( CLP) introduzido em [Jafar & Michaylov87]. Útil para modelizar problemas de optimização discreta: Escalonamento, planeamento, alocação de recursos, empacotamento, geração de horários, etc. Características do solver clp(fd): Duas classes de restrições: primitivas e globais. Restrições são automaticamente traduzidas para conjunções de restrições primitivas e globais Valor lógico de uma restrição pode ser reflectido numa variável binária (0/1) reificação. Novas restrições primitivas podem ser adicionadas escrevendo indexicais Novas restrições globais podem ser escritas em Prolog. Algumas questões abordadas Interface do Solver CLP(FD) Como chamar o Solver clp(fd)? Como escrever programas simples? Restrições disponibilizadas pelo Sictsus? Predicados para pesquisa da solução? Predicados para estatísticas de execução? Como adicionar novas restrições globais? Como criar novas restrições primitivas? O solver clp(fd) está disponível como uma biblioteca :- use_module(library(clpfd)). Contém predicados para testar a consistência e o entailment de restrições FD e para resolver o problema, atribuindo valores às variáveis do problema. Um domínio finito é um subconjunto de inteiros pequenos e um restrição FD é uma relação entre um túplode pequenos inteiros. Só pequenos inteiros são admitidos como variáveis unbound neste domínio. 5 6

2 Interface do Solver CLP(FD) Colocação de Restrições 7 Todas a variáveis de domínio têm um domínio FD com valores associados (explicitamente ou implicitamente). Temporariamente estes domínios podem ser infinitos (sem valores mínimo lower bound e máximo upper bound ). O domínio das variáveis vai-se reduzindo sucessivamente conforme mais restrições são adicionadas. Se o domínio ficar vazio então as restrições não são, em conjunto, satisfazíveis, e o ramo corrente de computação falha. No final da computação é usual que cada variável tenha o seu domínio restringido a um único valor ( singleton ). Para tal é usual necessária alguma pesquisa (da responsabilidade do programador). 8 Uma restrição é chamada como qualquer outro predicado Prolog Exemplos:?- X in 1..5, Y in 2..8, X+Y #= T. X in 1..5, Y in 2..8, T in 3..13? yes?- X in 1..5, T in 3..13, X+Y #= T. X in 1..5, T in 3..13, Y in ? yes A resposta mostra a existência de domínios válidos para as variáveis. Resolução de CSPs Constraint Satisfaction Problems Resolução de CSPs Exemplo: SEND+MORE=MONEY CSP Constraint Satisfaction Problem ou PSR Problema de Satisfação de Restrições: Classe de problemas para que o solver clp(fd) é mais adequado Objectivo num CSP: Escolher valores (de domínios pré-definidos) para algumas variáveis de forma a que as restrições entre essas variáveis sejam todas satisfeitas. Criptograma - Send More Money Puzzle : Variáveis: letras S, E, N, D, M, O, R, Y Cada letra representa um dígito entre 0 e 9 Problema: Atribuir um valor distinto a cada dígito tal que: SEND + MORE = MONEY 9 10 Resolução de CSPs Constraint Satisfaction Problems Resolução de CSPs Exemplo: SEND+MORE=MONEY 11 Passos típicos na escrita de programa clp(fd): 1. Declarar variáveis e seus domínios 2. Colocar as restrições do problema 3. r por uma solução admissível através de pesquisa com backtracking ou uma solução óptima utilizando branch-and-bound. 12 :- use_module(library(clpfd)). puzzle([s,e,n,d,m,o,r,y]) :- domain([s,e,n,d,m,o,r,y], 0, 9), % passo 1 S#>0, M#>0, all_different([s,e,n,d,m,o,r,y]), % passo 2 sum(s,e,n,d,m,o,r,y ), labeling([], [S,E,N,D,M,O,R,Y]). % passo 3 sum(s, E, N, D, M, O, R, Y) :- 1000*S + 100*E + 10*N + D *M + 100*O + 10*R + E #= 10000*M *O + 100*N + 10*E + Y.?- puzzle([s,e,n,d,m,o,r,y]). D = 7, E = 5, M = 1, N = 6, O = 0, R = 8, S = 9, Y = 2?

3 Resolução de CSPs Exemplo: SEND+MORE=MONEY Resolução de CSPs Exemplo: SEND+MORE=MONEY 13 Por vezes um passo extra corresponde à colocação de restrições redundantes de forma a eliminar simetrias e reduzir o espaço de pesquisa Os domínios são definidos através do predicado domain/3 Restrições simples: S#>0 e M#>0 Predicado sum/8 coloca a restrição essencial Predicado all_different/1 garante que os valores atribuídos às variáveis serão distintos. com backtrack realizada por labeling/2. Estratégias de pesquisa distintas podem ser definidas (segundo parâmetro de labeling) No exemplo é usada a estratégia por defeito: seleccionar a variável à esquerda e atribuir-lhe o valores em ordem crescente. 14 E se invertermos? Primeiro labeling, depois restringir? :- use_module(library(clpfd)). puzzle([s,e,n,d,m,o,r,y]) :- domain([s,e,n,d,m,o,r,y], 0, 9), labeling([], [S,E,N,D,M,O,R,Y]), S#>0, M#>0, all_different([s,e,n,d,m,o,r,y]), sum(s,e,n,d,m,o,r,y ). sum(s, E, N, D, M, O, R, Y) :- 1000*S + 100*E + 10*N + D *M + 100*O + 10*R + E #= 10000*M *O + 100*N + 10*E + Y. Resulta no mecanismo GENERATE and TEST tradicional! Restrições Disponíveis Restrições Materializáveis Reified 15 Restrições Aritméticas Restrições de Pertença a Grupo Restrições Proposicionais Restrições definidas pelo Utilizador 16 Em vez de simplesmente colocar as restrições é útil reflectir o seu valor de verdade numa variável booleana (0/1) tal que: A restrição é colocada se B for colocado a 1 A negação da restrição é colocada se B for colocado a 0 B é colocado a 1 se a restrição se tornar entailed. B é colocado a 0 se a restrição se tornar disentailed. Este mecanismo é conhecido como reificação. Uma restrição reifiavél é escrita como:?- Constraint #<=> B. Exemplo: exactly(x,l,n) - Verdadeira se X ocorre exactamente N vezes na lista L. Pode ser defina como: exactly(_, [], 0). exactly(x, [Y L], N) :- X #= Y #<=> B, N #= M+B, exactly(x, L, M). Restrições Aritméticas Introdução Restrições Aritméticas Restrições Aritméticas Dedicadas 17 Definição:?Expr RelOp?Expr Expressões podem ou não ser lineares. Expressões lineares conduzem a maior propagação. Por exemplo: X/Y e X mod Y bloqueiam até Y estar ground (definido). Restrições Aritméticas podem ser reificadas:?- X in1..2, Y in3..5, X#=<Y #<=> B. B = 1, X in 1..2, Y in 3..5? Restrições lineares mantêm (pelo menos) consistência de intervalos e as suas versões reificadas detectam (pelo menos) entailment e desentailment de intervalos 18 As restrições seguintes expressam relações de entre a soma ou ou produto escalar e um valor: sum(+xs, +RelOp,?Value ) scalar_product(+coefs, +Xs, +RelOp,?Value ) knapsack(+coefs, +Xs,?Value) Utilizam algoritmos dedicados e são muito mais eficientes do que a colocação de uma série de restrições simples Estas restrições não podem ser reified

4 Restrições Aritméticas Soma e Produto Escalar Restrições Aritméticas Knapsack 19 sum(+xs, +RelOp,?Value) Onde: Xs é uma lista de inteiros ou variáveis de domínio, RelOp é um operador relacional e Value é um inteiro ou variável de domínio Verdadeira se a soma dos elementos de Xs tem a relação RelOp com Value scalar_product(+coefs,+xs, +RelOp,?Value) Onde Coefs é uma lista de comprimento n de inteiros, Xsé uma lista de comprimento n de inteiros ou variáveis de domínio, RelOp é um operador relacional e Value é um inteiro ou variável de domínio Verdadeiro se a soma de Coefs*Xstem a relação RelOp com Value 20 Caso especial de scalar_product/4 com RelOp #=: knapsack(+coefs, +Xs,?Value) Onde Coefs é uma lista de comprimento n de inteiros não negativos, Xsé uma lista de comprimento n de inteiros não negativos ou variáveis de domínio e Value é um inteiro ou variável de domínio. As variáveis de domínio devem ter limites finitos. Verdadeiro se a soma de Coefs*Xs é igual a Value Restrições de Pertença - Membership Restrições Proposicionais 21 domain(+variables, +Min, +Max) Onde Variables é uma lista de variáveis de domínio ou inteiros, Min é um inteiro ou o átomo inf ( minus infinity ), e Max é um inteiro ou o átomo sup (plus infinity). Verdadeiro se as variáveis são todas elementos do intervalo Min..Max. Não pode ser reified?x in +Range Define uma restrição de pertença ( membership ) X é um inteiro ou variável de domínio e Range é um ConstantRange Veradeiro de X é um elemento do intervalo?x in_set +FDSet Define uma restrição de pertença ( membership ) X é um inteiro ou variável de domínio e FDSet é um conjunto FD Verdadeiro de X é um elemento do FD set Restrições in/2 e in_set/2 podem ser materializadas (reified ) Mantêm consistência do domínio e as versões reified detectam domain - entailment e disentailment 22 Podem ser utilizadas como restrições reificáveis em fórmulas proposicionais sobre essas restrições Estas fórmulas são expandidas como sequências de restrições reificadas e restrições aritméticas. Exemplo: X #= 4 #\/ Y #= 6 expressa a disjunção de duas restrições de igualdade As folhas das fórmulas proposicionais podem ser restrições reificáveis, as constantes 0 ou 1 ou variáveis binárias (0/1) Novas restrições reificáveis podem ser definidas com indexicais Restrições Proposicionais Count 23 #\ :Q Verdadeiro se a restrição Q for falsa :P #/\ :Q Verdadeiro se as restrições P e Q são ambas verdadeiras :P #\ :Q Verdadeiro se exactamente uma das restrições P e Q é verdadeira :P #\/ :Q Verdadeiro se pelo menos uma das restrições P e Q é verdadeira :P #=> :Q :Q #<= :P Verdadeiro se a restrição Q é verdadeira ou se a restrição P é falsa :P #<=> :Q Verdadeiro se P e Q são ambas verdadeiras ou ambas falsas Note-se que o esquema de materialização (reification) é um caso particular das restrições preposicionais. 24 Também designadas restrições simbólicas Não são reificáveis. Mantém consistência de intervalos nos seus argumentos count(+val,+list,+relop,?count) Onde Val é um inteiro, List é uma lista de inteiros ou variáveis de domínio, Count é um inteiro ou variável de domínio, e RelOp é um operador relacional Verdadeiro se N é o número de elementos de List que são iguais a Val e N RelOp Count Ou seja: count/4 é uma generalização de exactly/3 count/4 mantém consistência de domínio, mas em geral global_cardinality( +Vars,+ Vals) é uma alternativa melhor

5 Global Cardinality global_cardinality(+vars,+vals) Onde: Varsé uma lista de inteiros ou variáveis de domínio e Vals é uma lista de termos V-K, onde V é um inteiro e K é uma variável de domínio ou um inteiro. Cada V deve ser único Verdadeiro se cada elemento de Vars é igual a um V e para cada par V-K, exactamente K elementos de Vars são iguais a V Se ou Vars ou Vals estão ground, e noutros casos especiais, global_cardinality/2 mantém a consistência de domínio, mas geralmente a consistência de intervalos não pode ser garantida Element element(?x,+list,?y) Onde: X e Ysão inteiros ou variáveis de domínio e List é uma lista de inteiros ou variáveis de domínio. Verdadeiro se o X-ésimo elemento de List é Y Operacionalmente os domínios de X e Y são restringidos de forma a que para cada elemento no domínio de X, existe um elemento compatível no domínio de Y, e vice versa Esta restrição usa um algoritmo optimizado para o caso especial em que List está ground element/3 mantém consistência de domínio em X e consistência de intervalos em List e Y All Different Descrição All Different Opções 27 all_different(+variables) all_distinct(+variables) all_different(+variables, +Options ) all_distinct(+variables, +Options) onde Variables é uma lista de variáveis de domínio ou inteiros Cada variável é restringida a tomar um valor único Equivalente a uma restrição \= para cada par de variáveis Options é uma lista de zero ou mais opções 28 on(on) - Quando acordar a restrição: dom (defeito para all_distinct/[1,2]), ou seja acordar quando o domínio de uma variável é alterado min acordar quando a lower bound é mudada max acordar quando a upper bound é mudada minmax acordar quando uma bound é mudada val (defeito para all_different/[1,2]) - acordar quando uma variável fica ground consistency(cons) Que algoritmo utilizar: global (defeito para all_distinct/[1,2]) Algoritmo de consistência de domínios - aproximadamente linear na dimensão dos domínios Local (defeito para all_different/[1,2]) Algoritmo idêntico ao conjunto de restrições binárias \=, aproximadamente linear no numero de variáveis bound Algoritmo de consistência de intervalos, quase linear no número de variáveis e valores All Different - Exemplo Restrição Ordenação 29 alldifferent([]). alldifferent([a L]) :- diff(a,l), alldifferent(l ). diff(_,[]). diff(a,[b L]) :- A #\= B, diff(a,l). alldifferent([s,e,n,d,m,o,r,y]) resulta em: S #\= E, S #\= N, S #\= D, S #\= M, S #\= O, S #\= R, S #\= Y, E #\= N, E #\= D, E #\= M, E #\=O, E #\= R, E #\= Y, N #\= D, N #\= M, N #\=O, N #\= R, N #\= Y, D #\= M, D #\=O, D #\= R, D #\= Y Idêntico ao all_different(list)! 30 Esta restrição captura a relação entre uma lista de valores, uma lista de valores ordenada de forma ascendente e as suas posições na lista original: sorting(+xs,+is,+ys) Os argumentos são listas de igual comprimento (N) de variáveis de domínio ou inteiros. Os elementos de Is estão no intervalo: 1..N. A restrição verifica-se se: Ys está em ordenação ascendente Is é uma permutação de 1..N. Para cada i em 1..N, Xs[i] é igual a Ys[Is[i]]

6 Relation Case 31 relation(?x,+maplist,?y) Onde X e Ysão inteiros ou variáveis de domínio e MapList é uma lista de pares: Inteiro-ConstantRange, onde cada chave Inteiro ocorre só uma vez Verdadeiro se MapList contém um par X-R e Y está no intervalo denotado por R. Os domínios de X e Y são restringidos de forma a que, para cada elemento no domínio de X, existe um elemento compatível no domínio de Y, e vice versa 32 case(+template, +Tuples, +Dag) case(+template, +Tuples, +Dag, +Options) Templateé um termo arbitrário non- ground Prolog (moldura) Tuples é uma lista de termos da mesma forma que Template (não devem partilhar variáveis com Template) Dag é uma lista de nós na forma node(id,x,successors), onde X é uma variável placeholder. O conjunto de todos os X deve ser igual ao conjunto de variáveis em Template O primeiro nó da lista é a raiz (rootid) Os nós ou são nós internos ou folhas, caso em que Successors é uma lista de termos (Min..Max)-ID2, onde ID2 refere-se ao nó filho. Para as folhas, Successors é uma lista de termos (Min..Max). Cada caminho da raiz a uma folha corresponde a um conjunto de tuplos admitido pela relação expressa pela restrição. Cada variável em Templatedeve ocorrer exactamente uma vez em cada caminho e não devem ocorrer ciclos. Options é uma lista de opções utilizada para controlar a restrição: leaves, on, prune. Restrição Assignment Restrição Circuit 33 Restrição sobre duas listas de dimensão n de variáveis. Cada variável é restringida a tomar um valor entre 1,...,n que é único para a sua lista. As listas são duais. assignment(+xs, +Ys) assignment(+xs, +Ys, +Options) onde Xs e Ys são listas de variáveis de domínio ou inteiros de dimensão n Options é uma lista idêntica à de all_different/2 com valor por defeito: [on(domain),complete(true)]. Verdadeiro se todos Xi, Yi no intervalo: 1,...,n e Xi=j se e só se: Yj=i. 34 Restringir n nós num grafo a formar um circuito Hamiltoniano. Os nós estão numerados de 1 a n e o circuito começa no nó 1 e visita cada um dos nós regressando à origem: circuit(+succ) circuit(+succ, +Pred) Succ é uma lista de comprimento n de variáveis de domínio ou inteiros. O i-ésimo elemento de Succ (Pred) é o sucessor (predecessor) de i no grafo. Verdadeiro se os valores formam um circuito Hamiltoniano Restrição Serialized - Introdução Restrição Serialized - Opções 35 Restringir n tarefas, cada qual com início Sj e duração Dj, de forma a que as tarefas não se sobreponham. As tarefas podem ser vistas como competindo por recursos exclusivos serialized(+starts,+durations) serialized(+starts,+durations,+options) Starts = [S1,...,Sn] e Durations = [D1,...,Dn] são listas de variáveis de domínio com limites finitos ou inteiros. Durations tem de ser nãonegativa. Verdadeiro se Starts e Durations denotam um conjunto de tarefas que não se sobrepõem, i.e.: Para todos 1 =< i<j =< n: Si+Di =< Sj OU Sj+Dj =< Si OU Di = 0 OU Dj = 0 A restrição serialized/[2,3] é um caso especial de cumulative /[4,5] Options é uma lista de zero ou mais das seguintes: 36 precedences(ps) restrições de precedência como lista de termos na forma: d(i,j,d), onde i e j devem ser números de tarefas e d um inteiro positivo ou sup, denotando: Si+d =< Sj OU Sj =< Si, se d for um inteiro Sj =< Si, se d for sup resource(r) R é unificado com um termo passado a order_resource/2 de forma a procurar uma ordenação consistente para as tarefas path_consistency(boolean) Se for verdadeiro um algoritmo redundante de consistência nos caminhos é utilizado na restrição para melhorar o corte no espaço de pesquisa static_sets(boolean) Se for veradeiro, um algoritmo redundante é utilizado que raciocina sobre o conjunto de tarefas que devem preceder (ou ser precedidas por) uma dada tarefa Outras opções: edge_finder(boolean), decomposition(boolean), bounds_only(boolean)

7 Restrição Serialized/3 Restrição Cumulativa A 37 serialized/3 pode modelizar um conjunto de tarefas que têm de ser serializadas (escalonadas) com tempos de setup dependentes da sequência Por exemplo, com 3 tarefas todas com duração 5, onde a tarefa 1 deve preceder a 2 e a tarefa 3 deve acabar antes da 2 ou começar 10 unidades de tempo depois da 2 começar:?- domain([s1,s2,s3], 0, 20), serialized([s1,s2,s3], [5,5,5], [precedences([d(2,1,sup),d(2,3,10)])]). S1 in 0..15, S2 in 5..20, S3 in 0..20? Os limites de S1 e S2 mudaram devido às restrições de precedência. Colocando S2 a 5 propaga S1=0 e S3 em Restringir n tarefas a ser realizadas no tempo em m máquinas. Cada máquina tem um limite de recursos. As tarefas são representadas por um termo O,D,E,H,M onde: O é o starttime, D a duração, E o end time, H o consumo de recursos e M o identificador da máquina As máquinas são representadas por termos: machine(m,l) onde M é um identificador e L é o limite de recursos da máquina Todos os campos são variáveis de domínio ou inteiros. L é um inteiro D deve ser não -negativo, mas H pode ser positivo ou negativo (interpretado como um consumo negativo, ou seja uma oferta de recurso) cumulatives(+tasks,+machines) cumulatives(+tasks,+machines,+options) Options é uma lista de: bound(b ), prune(p), generalization(boolean) e task_intervals(boolean) Restrição Cumulativa B Restrição Disjoint 39 Restringir n tarefas com início (start time) Sj, e duração Dj, e recursos Rj, de forma que o consumo de recursos não exceda Limit em qualquer altura: cumulative(+starts,+durations,+resources,?limit) cumulative(+starts,+durations,+resources,?limit,+options) Starts = [S1,...,Sn], Durations = [D1,...,Dn], Resource = [R1,...,Rn] são listas de variáveis de domínio ou inteiros, e Limit é uma variável de domínio ou um inteiro. Durations, Resources e Limit devem ser nãonegativas. Sendo: a = min(s1,...,sn), b = max(s1+d1,...,sn+dn) Rij = Rj, se Sj =< i < Sj+Dj Rij = 0 caso contrário A restrição não é violada se: Ri1+...+Rin =< Limit, para todos: a =< i < b Options tem a mesma forma de serialized/3, excepto resource(r ) 40 Conjunto de rectângulos ou linhas que não se devem sobrepor: disjoint1(+lines) disjoint1(+lines,+options) OndeLines é umalista de termos F(Sj,Dj) ou F(Sj,Dj,Tj), Sj e Dj são variáveis de domínio ou inteiros denotandoa origem e comprimentodalinha j respectivamente, F é um qualquer functor, e Tj é um termo atómicoopcional denotando o tipo de linha Options é uma lista de: decomposition(boolean), global(boolean), wrap(min,max), margin(t1,t2,d) Predicados de Enumeração Predicados de Optimização 41 Usualmente os solvers de restrições em domínios finitos não são completos, ou seja, não garantem que o conjunto de restrições é satisfazível! É necessário pesquisa (enumeração) para verificar a satisfabilidade e conseguir soluções concretas! Predicados para efectuar a pesquisa: labeling(:options, +Variables) Onde Variables é uma lista de variáveis de domínio ou inteiros e Options é uma lista de opções de pesquisa. Verdadeiro se uma atribuição de valores às variáveis que satisfaça todas as restrições pode ser encontrada indomain(?x) Onde X é uma variável de domínio ou um inteiro. Atribui numa ordem ascendente com backtracking valor admissíveis a X 42 Predicados de Optimização (Minimização/Maximização) de um Custo/Lucro: minimize(:goal,?x) maximize(:goal,?x) Utiliza o algoritmo branch-and-bound, com recomeço, para procurar uma atribuição que minimize/maximize a variável de domínio X. Goal deve ser um predicado Prolog que restrinja X a ficar com um valor, podendo ser um predicado labeling/2. O algoritmo chama Goal repetidamente com uma upper (lower) bound de X progressivamente mais restringida até a prova de optimalidade ser obtida (o que por vezes é demasiado demorado ) O argumento Options de labeling/2 controla a ordem de selecção de variáveis e valores e o tipo de solução a encontrar (única, óptima, etc.)

8 Opções de Ordenação de Variáveis 43 Options do labeling estão divididas em quatro grupos: Ordenação de variáveis: leftmost, min, max, ff, ffc ou variable(sel) Forma de Selecção de valores: step, enum, bisect, value(enum) Ordenação de valores: up, down Soluções a encontrar: all, minimize, maximize 44 Opções de Ordenação de variáveis: leftmost variável à esquerda (por defeito) min variável com menor lower bound max variável com maior upper bound ff - first-fail principle é usado variável com o menor domínio ffc - most constrained heuristic variável com o menor domínio, quebrando empates seleccionando a variável envolvida em mais restrições suspendidas variable(sel) Em que Sel é um predicado para seleccionar a próxima variável, chamado como: Sel(Vars, Selected, Rest) Sel deve suceder deterministicamente unificando Selected e Rest com a variável seleccionada e a lista restante Ordenação de Valores Ordenação de Valores 45 Opções de selecção de valores para uma variável: step - escolha binária entre X #= B e X #\= B, onde B é a lower ou upper bound de X. (opção por defeito) enum - Escolha múltipla para X correspondendo a valores no seu domínio bisect Escolha binária entre X #=< M e X #> M, onde M é o ponto médio do domínio de X (Divisão de domínio) value(enum) Enum é um predicado que deve reduzir o domínio de X, chamado como: Enum(X, Rest, BB0, BB) onde Rest é a lista de variáveis que necessitam de labeling excepto X, e BB0 e BB são: (ver slide seguinte) 46 Enum deve suceder de forma não-determinística reduzindo o domínio de X e efectuar backtrack, providenciando formas de redução de domínio alternativas Para assegurar que a pesquisa branch-and-boundfunciona correctamente deve chamar o predicado auxiliar: first_bound(bb0,bb) na sua primeira solução e later_bound(bb0,bb) em qualquer solução alternativa Enum deve ser um termo executável Opções na ordenação de valores (sem utilidade com a opção value(enum)): up ordenação ascendente (por defeito) down ordenação descendente Maximização e Minimização Maximização e Minimização 47 As opções seguintes controlam se todas as soluções devem ser enumeradas por backtracking ou se uma única solução que maximize(minimize) X deve ser encontrada: all - Todas as soluções são encontradas (por defeito) minimize(x) solução de custo mínimo maximize(x) solução de lucro máximo Utiliza o algoritmo branch-and-bound com recomeço para procurar uma atribuição que minimize ou maximize a variável de domínio X. O mecanismo de labeling deve restringir X a ficar com um valor para todas as atribuições de Variables. Opção: assumptions(k) Quando uma solução é encontrada, K é unificada com o número de escolhas feito 48 Exemplo 1: Enumerar soluções com ordenação de variáveis estática:?- constraints(variables), labeling([ ], Variables). [ ] é o mesmo que: [leftmost,step,up,all ] Exemplo 2: Minimizar uma função de custo utilizando pesquisa branchand-bounde ordenação dinâmica de variáveis usando o first-fail principle, e divisão de domínio explorando a parte superior dos domínios primeiro:?- constraints(variables, Cost), labeling([ff,bisect,down,minimize(cost)], Variables).

9 Maximização e Minimização Estatísticas Predicados de Estatísticas 49 de ordenação consistente de tarefas competindo por recursos exclusivos (em vez de atribuição de valores a variáveis de domínio): order_resource(+options, +Resource) Options é uma lista de opções de pesquisa e Resource representa um recurso como em serialized/3 no qual as tarefas devem ser serializadas. Verdadeiro se a ordenação total pode ser imposta nas tarefas, enumerando utilizando backtracking Opções de pesquisa: first, last selecção de tarefas para serem colocadas antes(depois) de todas as outras est Tarefas ordenadas por earliest start time. ist - Tarefas ordenadas por latest start time. ect - Tarefas ordenadas por earliest completion time. ict - Tarefas ordenadas por latest completion time. [first,est] (por defeito) e [last,lct] podem ser boas heurísticas. 50 Estatísticas de execução: fd_statistics(?key,?value) Estatísticas específicas do solver CLP(FD) Outras estatísticas (por exemplo tempo e consumo de memória): statistics/2 (normal) Para cada chave possível (Key), Value é unificado com o valor da estatística: Resumptions Número de vezes que uma restrição foi reatada Entailments Número de vezes que um (dis)entailment foi detectado por uma restrição Prunings Número de vezes que o domínio foi reduzido ( pruned ) Backtracks Número de vezes que foi encontrada uma contradição num domínio e falha foi detectada Constraints Número de restrições criadas fd_statistics Mostra um resumo das estatísticas a cima Conclusões Metodologia de resolução em PLR: Definição de variáveis e domínios, colocação de restrições, pesquisa da solução) SICStus Prolog providencia um grande número de restrições globais com aplicações distintas (all_distinct, sum, scalar_product, global_cardinality, element, cumulative, circuit, etc.) Possibilidade de definição de métodos de ordenação de variáveis e valores alternativos Possibilidade de resolução de problemas de optimização (maximização/minimização) 51

Problemas de Satisfação de Restrições

Problemas de Satisfação de Restrições Computação Inteligente Problemas de Satisfação de Restrições Lucas Augusto Carvalho Mestrado em Ciência da Computação 2011.1 DCOMP - Universidade Federal de Sergipe 1 Conteúdo Problemas de Satisfação de

Leia mais

Satisfação de Restrições. Capítulo 5 (disponível online)

Satisfação de Restrições. Capítulo 5 (disponível online) Satisfação de Restrições Capítulo 5 (disponível online) Sumário Problemas de Satisfação de Restrições (CSPs) Procura com Retrocesso para CSPs Procura Local para CSPs Estrutura dos CSPs Problemas de Satisfação

Leia mais

Programação Inteira. Advertência

Programação Inteira. Advertência Departamento de Informática Programação Inteira Métodos Quantitativos LEI 2006/2007 Advertência Autores João Moura Pires (jmp@di.fct.unl.pt) Susana Nascimento (snt@di.fct.unl.pt) Este material pode ser

Leia mais

IA: Problemas de Satisfação de Restrições. Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br

IA: Problemas de Satisfação de Restrições. Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br IA: Problemas de Satisfação de Restrições Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br Introdução Um PSR é definido por um conjunto de variáveis X 1, X 2,..., X n, e por um conjunto de restrições,

Leia mais

Utilização do SOLVER do EXCEL

Utilização do SOLVER do EXCEL Utilização do SOLVER do EXCEL 1 Utilização do SOLVER do EXCEL José Fernando Oliveira DEEC FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO MAIO 1998 Para ilustrar a utilização do Solver na resolução de

Leia mais

Investigação Operacional- 2009/10 - Programas Lineares 3 PROGRAMAS LINEARES

Investigação Operacional- 2009/10 - Programas Lineares 3 PROGRAMAS LINEARES Investigação Operacional- 2009/10 - Programas Lineares 3 PROGRAMAS LINEARES Formulação A programação linear lida com problemas nos quais uma função objectivo linear deve ser optimizada (maximizada ou minimizada)

Leia mais

APLICAÇÕES DA DERIVADA

APLICAÇÕES DA DERIVADA Notas de Aula: Aplicações das Derivadas APLICAÇÕES DA DERIVADA Vimos, na seção anterior, que a derivada de uma função pode ser interpretada como o coeficiente angular da reta tangente ao seu gráfico. Nesta,

Leia mais

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 11 Problemas com Satisfação de Vínculos

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 11 Problemas com Satisfação de Vínculos Inteligência Artificial Prof. Tiago A. E. Ferreira Aula 11 Problemas com Satisfação de Vínculos 1 Constraint Satisfaction Problems (CSP) Conceitos básicos Busca cega simples e refinada Busca heurística

Leia mais

PROGRAMAÇÃO LINEAR. Resolução de problemas de programação linear usando o comando Solver, no Excel.

PROGRAMAÇÃO LINEAR. Resolução de problemas de programação linear usando o comando Solver, no Excel. PROGRAMAÇÃO LINEAR Resolução de problemas de programação linear usando o comando Solver, no Excel. Para além da resolução pelo método gráfico e/ou outros métodos, é possível resolver um problema de PL

Leia mais

CAP. I ERROS EM CÁLCULO NUMÉRICO

CAP. I ERROS EM CÁLCULO NUMÉRICO CAP. I ERROS EM CÁLCULO NUMÉRICO 0. Introdução Por método numérico entende-se um método para calcular a solução de um problema realizando apenas uma sequência finita de operações aritméticas. A obtenção

Leia mais

O Método Simplex para

O Método Simplex para O Método Simplex para Programação Linear Formas de Programas Lineares O problema de Programação Matemática consiste na determinação do valor de n variáveis x 1, x 2,, x n que tornam mínimo ou máximo o

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Laboratório de Pesquisa e Desenvolvimento Universidade Federal de Alfenas versão

Leia mais

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.1. Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.1. Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005. genda nálise e Técnicas de lgoritmos Jorge Figueiredo onceitos ásicos O Problema das Rainhas Template Genérico Mochila inária acktracking and ranch-and-ound Jogo da Troca de olas Jogo da Troca de olas

Leia mais

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu 1 Programação Não Linear Aula 25: Programação Não-Linear - Funções de Uma única variável Mínimo; Mínimo Global; Mínimo Local; Optimização Irrestrita; Condições Óptimas; Método da Bissecção; Método de Newton.

Leia mais

Inteligência Artificial Prof. Marcos Quinet Pólo Universitário de Rio das Ostras PURO Universidade Federal Fluminense UFF

Inteligência Artificial Prof. Marcos Quinet Pólo Universitário de Rio das Ostras PURO Universidade Federal Fluminense UFF Inteligência Artificial Prof. Marcos Quinet Pólo Universitário de Rio das Ostras PURO Universidade Federal Fluminense UFF No capítulo anterior... Estratégias de busca auxiliadas por heurísticas (A*, BRPM)

Leia mais

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho. Computação Paralela Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Desenvolvimento de Aplicações Paralelas Uma Metodologia

Leia mais

Resolução de Problemas Com Procura. Capítulo 3

Resolução de Problemas Com Procura. Capítulo 3 Resolução de Problemas Com Procura Capítulo 3 Sumário Agentes que resolvem problemas Tipos de problemas Formulação de problemas Exemplos de problemas Algoritmos de procura básicos Eliminação de estados

Leia mais

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Computabilidade 2012/2013 Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Capítulo 1 Computabilidade 1.1 A noção de computabilidade Um processo de computação

Leia mais

Problemas de Satisfação de Restrições

Problemas de Satisfação de Restrições Problemas de Satisfação de Restrições Texto base: Stuart Russel e Peter Norving - Inteligência Artificial David Poole, Alan Mackworth e Randy Goebel - Computational Intelligence A logical approach junho/2007

Leia mais

PROGRAMAÇÃO LÓGICA POR RESTRIÇÕES NA RESOLUÇÃO DE PROBLEMAS

PROGRAMAÇÃO LÓGICA POR RESTRIÇÕES NA RESOLUÇÃO DE PROBLEMAS 3 PROGRAMAÇÃO LÓGICA POR RESTRIÇÕES NA RESOLUÇÃO DE PROBLEMAS A Programação Lógica por Restrições (PLR) corporiza um paradigma computacional que combina a natureza declarativa da programação em lógica

Leia mais

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2 FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade

Leia mais

Programas simples em C

Programas simples em C Programas simples em C Problema 1. Escreve um programa em C que dados dois inteiros indique se são iguais ou qual o maior. Utilizar a construção em 5 etapas... quais? 1. Perceber o problema 2. Ideia da

Leia mais

Microsoft Excel na resolução de problemas de optimização

Microsoft Excel na resolução de problemas de optimização Universidade do Minho Escola de Engenharia Departamento Campus de Gualtar de Produção 4710-057 Braga e Sistemas Microsoft Excel na resolução de problemas de optimização Manual da disciplina de Métodos

Leia mais

1. Introdução 2. Representação de números 2.1. Conversão Numérica 2.2. Aritmética de ponto flutuante 3. Erros 3.1 Erros Absolutos e Relativos

1. Introdução 2. Representação de números 2.1. Conversão Numérica 2.2. Aritmética de ponto flutuante 3. Erros 3.1 Erros Absolutos e Relativos 1. Introdução 2. Representação de números 2.1. Conversão Numérica 2.2. Aritmética de ponto flutuante 3. Erros 3.1 Erros Absolutos e Relativos 1. Introdução O que é cálculo numérico? Corresponde a um conjunto

Leia mais

Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Teoria de Erros

Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Teoria de Erros Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Lic. Eng. Biomédica e Bioengenharia-2009/2010 O que é a Análise Numérica? Ramo da Matemática dedicado ao estudo e desenvolvimento de métodos (métodos

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br eduardo.barrere@ice.ufjf.br www.barrere.ufjf.br Complexidade de Algoritmos Computabilidade: Um problema é computável

Leia mais

Introdução à Lógica de Programação

Introdução à Lógica de Programação Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação 1 Estruturas de dados Representação computacional das informações do problema ser resolvido Informações podem ser de

Leia mais

PROBLEMA DE TRANSPORTE: MODELO E MÉTODO DE SOLUÇÃO

PROBLEMA DE TRANSPORTE: MODELO E MÉTODO DE SOLUÇÃO PROBLEMA DE TRANSPORTE: MODELO E MÉTODO DE SOLUÇÃO Luciano Pereira Magalhães - 8º - noite lpmag@hotmail.com Orientador: Prof Gustavo Campos Menezes Banca Examinadora: Prof Reinaldo Sá Fortes, Prof Eduardo

Leia mais

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu 1 Programação Linear (PL) Aula 5: O Método Simplex. 2 Algoritmo. O que é um algoritmo? Qualquer procedimento iterativo e finito de solução é um algoritmo. Um algoritmo é um processo que se repete (itera)

Leia mais

Base de dados I. Base de dados II

Base de dados I. Base de dados II Base de dados I O que é? Uma base de dados é um simples repositório de informação, relacionada com um determinado assunto ou finalidade, armazenada em computador em forma de ficheiros Para que serve? Serve

Leia mais

Pesquisa Operacional Programação em Redes

Pesquisa Operacional Programação em Redes Pesquisa Operacional Programação em Redes Profa. Alessandra Martins Coelho outubro/2013 Modelagem em redes: Facilitar a visualização e a compreensão das características do sistema Problema de programação

Leia mais

RELAÇÕES BINÁRIAS Produto Cartesiano A X B

RELAÇÕES BINÁRIAS Produto Cartesiano A X B RELAÇÕES BINÁRIAS PARES ORDENADOS Um PAR ORDENADO, denotado por (x,y), é um par de elementos onde x é o Primeiro elemento e y é o Segundo elemento do par A ordem é relevante em um par ordenado Logo, os

Leia mais

PC Fundamentos Revisão 4

PC Fundamentos Revisão 4 exatasfepi.com.br PC Fundamentos Revisão 4 André Luís Duarte...mas os que esperam no Senhor renovarão as suas forças; subirão com asas como águias; correrão, e não se cansarão; andarão, e não se fatigarão.is

Leia mais

EXCEL TABELAS DINÂMICAS

EXCEL TABELAS DINÂMICAS Informática II Gestão Comercial e da Produção EXCEL TABELAS DINÂMICAS (TÓPICOS ABORDADOS NAS AULAS DE INFORMÁTICA II) Curso de Gestão Comercial e da Produção Ano Lectivo 2002/2003 Por: Cristina Wanzeller

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Parte 2. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Parte 2. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu. Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Parte 2 Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br versão da aula: 0.3 Última aula teórica Algoritmo de Tentativa e Erro:

Leia mais

IA: Busca Competitiva. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br

IA: Busca Competitiva. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br IA: Busca Competitiva Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br Sumário Introdução Árvores de Jogos Minimax Antecipação Limitada Poda Alfa-beta Introdução Jogos têm sido continuamente uma importante

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional Modelo de Dados Relacional e as Restrições de um Banco de Dados Relacional Modelo de Dados Relacional Conceitos do Modelo Relacional Representa o banco de dados como uma coleção de relações. Comparação

Leia mais

Índice 1 INTRODUÇÃO...2 2 PESQUISA DE ENTIDADES...8 3 CRIAÇÃO DE ENTIDADES...12 4 DEPENDÊNCIAS...17 5 BANCOS, SEGURADORAS E CONSERVATÓRIAS...

Índice 1 INTRODUÇÃO...2 2 PESQUISA DE ENTIDADES...8 3 CRIAÇÃO DE ENTIDADES...12 4 DEPENDÊNCIAS...17 5 BANCOS, SEGURADORAS E CONSERVATÓRIAS... Índice 1 INTRODUÇÃO...2 1.1 JANELA ÚNICA DE ENTIDADES...3 1.2 PERMISSÕES POR UTILIZADOR...4 1.3 RESTRIÇÕES À VISUALIZAÇÃO/MANIPULAÇÃO...6 2 PESQUISA DE ENTIDADES...8 2.1 CRITÉRIOS DE PESQUISA...8 2.2 LISTA

Leia mais

Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções)

Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções) Aulas anteriores... Formulação adequada do problema Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução Definição do algoritmo Método de decomposição hierárquica utilizando

Leia mais

Uma lei que associa mais de um valor y a um valor x é uma relação, mas não uma função. O contrário é verdadeiro (isto é, toda função é uma relação).

Uma lei que associa mais de um valor y a um valor x é uma relação, mas não uma função. O contrário é verdadeiro (isto é, toda função é uma relação). 5. FUNÇÕES DE UMA VARIÁVEL 5.1. INTRODUÇÃO Devemos compreender função como uma lei que associa um valor x pertencente a um conjunto A a um único valor y pertencente a um conjunto B, ao que denotamos por

Leia mais

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Manipulação de Dados Banco de Dados SQL DML SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição INSERT INTO... insere dados em uma tabela DELETE

Leia mais

Teoria da Computação - Programação OCaml Ficha de exercícios

Teoria da Computação - Programação OCaml Ficha de exercícios Teoria da Computação - Programação OCaml Ficha de exercícios Simão Melo de Sousa Em parte, estes exercícios baseam-se nas fichas práticas retiradas do site OCaml Hump 1 Aritmética Exercício 1 (Fibbonacci)

Leia mais

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson.

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios Aula 01 Slide 1 BIBLIOGRAFIA SCHILDT H. C Completo e Total, Makron Books. SP, 1997. Curso de linguagem C da UFMG. ZIVIANI,

Leia mais

Gestão de bases de dados e listas

Gestão de bases de dados e listas Gestão de bases de dados e listas Uma das tarefas mais comuns em que são utilizadas folhas de cálculo é a gestão de listas (listas de números de telefone, listas de clientes, listas de tarefas, listas

Leia mais

Programação em Lógica com Restrições Exame sem consulta - Duração: 3 horas

Programação em Lógica com Restrições Exame sem consulta - Duração: 3 horas DI-FCT/UNL 17 de Junho de 2010 Programação em Lógica com Restrições Exame sem consulta - Duração: 3 horas N º : Nome: Grupo 1 (4 valores) 1 a) Para cada um dos seguintes golos, indique se sucede (com V,

Leia mais

Arrendamento de espaço num armazém

Arrendamento de espaço num armazém Construção de Modelos de Programação Linear e Inteira 6 Arrendamento de espaço num armazém Uma empresa planeia arrendar espaço num armazém, sendo as suas necessidades para os próximos 5 meses as seguintes:

Leia mais

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14 1 Introdução O termo "roteamento de veículos" está relacionado a um grande conjunto de problemas de fundamental importância para a área de logística de transportes, em especial no que diz respeito ao uso

Leia mais

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.

Leia mais

MODELO RELACIONAL - UFMA

MODELO RELACIONAL - UFMA MODELO RELACIONAL Universidade Federal do Maranhão - UFMA Departamento de Informática Projeto de Banco de Dados Profª.MSc Simara Rocha simararocha@gmail.com/simara@deinf.ufma.br www.deinf.ufma.br/~simara

Leia mais

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de Escola Secundária c/3º CEB José Macedo Fragateiro Curso Profissional de Nível Secundário Componente Técnica Disciplina de Sistemas Digitais e Arquitectura de Computadores 29/21 Módulo 1: Sistemas de Numeração

Leia mais

Pesquisa Operacional na Tomada de Decisões. Conteúdos do Capítulo. Programação Linear. Lindo. s.t. Resolvendo Programação Linear Em um Microcomputador

Pesquisa Operacional na Tomada de Decisões. Conteúdos do Capítulo. Programação Linear. Lindo. s.t. Resolvendo Programação Linear Em um Microcomputador ª Edição Pesquisa Operacional na Tomada de Decisões Resolvendo Programação Linear Em um Microcomputador Gerson Lachtermacher,00 Programação Linear Software Versão Windows e comandos Formulação do problema

Leia mais

Notas de aula número 1: Otimização *

Notas de aula número 1: Otimização * UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL UFRGS DEPARTAMENTO DE ECONOMIA CURSO DE CIÊNCIAS ECONÔMICAS DISCIPLINA: TEORIA MICROECONÔMICA II Primeiro Semestre/2001 Professor: Sabino da Silva Porto Júnior

Leia mais

Aplicações de Escritório Electrónico

Aplicações de Escritório Electrónico Universidade de Aveiro Escola Superior de Tecnologia e Gestão de Águeda Curso de Especialização Tecnológica em Práticas Administrativas e Tradução Aplicações de Escritório Electrónico Microsoft Word Folha

Leia mais

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis 1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que

Leia mais

UML (Unified Modelling Language) Diagrama de Classes

UML (Unified Modelling Language) Diagrama de Classes UML (Unified Modelling Language) Diagrama de Classes I Classes... 2 II Relações... 3 II. Associações... 3 II.2 Generalização... 9 III Exemplos de Modelos... III. Tabelas de IRS... III.2 Exames...3 III.3

Leia mais

Ao conjunto total de tabelas, chamamos de Base de Dados.

Ao conjunto total de tabelas, chamamos de Base de Dados. O QUE É O ACCESS? É um sistema gestor de base de dados relacional. É um programa que permite a criação de Sistemas Gestores de Informação sofisticados sem conhecer linguagem de programação. SISTEMA DE

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Tipos de Dados Aula 5 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Tipos de Dados Sistema de tipos Tipos de Dados e Domínios Métodos

Leia mais

Jogos vs. Problemas de Procura

Jogos vs. Problemas de Procura Jogos Capítulo 6 Jogos vs. Problemas de Procura Adversário imprevisível" necessidade de tomar em consideração todas os movimentos que podem ser tomados pelo adversário Pontuação com sinais opostos O que

Leia mais

Sistemas de Nomes Planos

Sistemas de Nomes Planos Sistemas de Nomes Planos November 2, 2009 Sumário Sistemas de Nomes Planos e DHTs Chord Sistemas de Nomes Planos Tipicamente, sistemas de nomes à escala da Internet usam nomes estruturados hierarquicamente.

Leia mais

CTC-17 Inteligência Artificial Problemas de Busca. Prof. Paulo André Castro pauloac@ita.br

CTC-17 Inteligência Artificial Problemas de Busca. Prof. Paulo André Castro pauloac@ita.br CTC-17 Inteligência Artificial Problemas de Busca Prof. Paulo André Castro pauloac@ita.br www.comp.ita.br/~pauloac Sala 110, IEC-ITA Sumário Agentes que buscam soluções para problemas: Exemplo Tipos de

Leia mais

À DESCOBERTA DE SOFTWARE

À DESCOBERTA DE SOFTWARE À DESCOBERTA DE SOFTWARE PARA EXPLORAR A PROGRAMAÇÃO LINEAR NO ENSINO SECUNDÁRIO Paula Maria Barros (1), Ana Isabel Pereira (1), Ana Paula Teixeira (2) (1) Instituto Politécnico de Bragança, (2) Universidade

Leia mais

AULA 6 LÓGICA DOS CONJUNTOS

AULA 6 LÓGICA DOS CONJUNTOS Disciplina: Matemática Computacional Crédito do material: profa. Diana de Barros Teles Prof. Fernando Zaidan AULA 6 LÓGICA DOS CONJUNTOS Intuitivamente, conjunto é a coleção de objetos, que em geral, tem

Leia mais

Um Modelo Matemático de Gestão de Recursos Humanos

Um Modelo Matemático de Gestão de Recursos Humanos 30 Um Modelo Matemático de Gestão de Recursos Humanos JORGE SANTOS Departamento de Matemática, Escola Superior de Tecnologia de Viseu 1. Introdução O material que aqui publicamos foi resultado de várias

Leia mais

2 Problema das p-medianas

2 Problema das p-medianas 2 Problema das p-medianas 2.1 Definição O PMNC é definido da seguinte forma: determinar quais p facilidades (p m, onde m é o número de pontos onde podem ser abertas facilidades) devem obrigatoriamente

Leia mais

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011 BASES DE DADOS I LTSI/2 Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011 A Linguagem SQL As raízes da linguagem SQL remontam a 1974, altura em que a IBM desenvolvia

Leia mais

Inteligência Artificial Taguspark

Inteligência Artificial Taguspark Inteligência Artificial Taguspark Segundo Teste/ Exame Época Normal 7 de Julho de 2005 Esta prova tem 12 páginas. Preencha cuidadosamente o nome e número de cada página desta prova. Este teste/exame tem

Leia mais

Resolução da Lista 2 - Modelos determinísticos

Resolução da Lista 2 - Modelos determinísticos EA044 - Planejamento e Análise de Sistemas de Produção Resolução da Lista 2 - Modelos determinísticos Exercício 1 a) x ij são as variáveis de decisão apropriadas para o problemas pois devemos indicar quantos

Leia mais

Algoritmos Computacionais ( Programas )

Algoritmos Computacionais ( Programas ) Algoritmos Computacionais ( Programas ) A partir deste tópico, consideramos a utilização do universo Computacional na solução de problemas. Para tanto devemos lembrar que a transposição de problemas do

Leia mais

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO Problemas & Algoritmos Para resolver um problema através dum computador é necessário encontrar em primeiro lugar uma maneira de descrevê-lo

Leia mais

Introdução às Bases de Dados

Introdução às Bases de Dados Introdução às Bases de Dados Chave primária Domínios Relação F# F Nome Estado Cidade F1 José 20 Braga F2 João 10 Faro F3 Luís 30 Lisboa F4 Rui 30 Setúbal Atributos Tuplas Introdução às Bases de Dados Modelo

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

Leia mais

Tarefa Orientada 13 Agrupamento e sumário de dados

Tarefa Orientada 13 Agrupamento e sumário de dados Tarefa Orientada 13 Agrupamento e sumário de dados Objectivos: Funções de agregação Agrupamento e sumário de dados Funções de agregação Nesta tarefa orientada iremos formular consultas que sumariam os

Leia mais

Módulo III. Folhas de Cálculo

Módulo III. Folhas de Cálculo Módulo III Ferramentas do Office Folhas de Cálculo Ferramentas de produtividade 1 Folhas de Cálculo O que é: Uma Folha de Cálculo é, por tradição, um conjunto de células que formam uma grelha ou tabela

Leia mais

Chord. Tecnologias de Middleware. Fernando Martins - fmp.martins@gmail.com

Chord. Tecnologias de Middleware. Fernando Martins - fmp.martins@gmail.com Chord Tecnologias de Middleware 2006/2007 Fernando Martins - fmp.martins@gmail.com Tópicos Objectivo Motivação Peer-To-Peer Chord Descrição Geral Características Distintivas Comparação DNS Modelo do Sistema

Leia mais

Programação Linear com o Microsoft Excel R

Programação Linear com o Microsoft Excel R Programação Linear com o Microsoft Excel R Adriano Verdério 1, Clezio A. Braga 1 1 Colegiado do Curso de Matemática - Centro de Ciências Exatas e Tecnológicas da Universidade Estadual do Oeste do Paraná

Leia mais

Modelo Relacional. Modelo Relacional. Conceitos Gerais: Relação

Modelo Relacional. Modelo Relacional. Conceitos Gerais: Relação Modelo Relacional Fernanda Baião UNIRIO Material parcialmente extraído a partir das notas de aula de Maria Luiza M. Campos, Arnaldo Rocha e Maria Cláudia Cavalcanti Modelo Relacional Modelo Lógico: ferramenta

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados

Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas Departamento de Ciências

Leia mais

2 A Derivada. 2.1 Velocidade Média e Velocidade Instantânea

2 A Derivada. 2.1 Velocidade Média e Velocidade Instantânea 2 O objetivo geral desse curso de Cálculo será o de estudar dois conceitos básicos: a Derivada e a Integral. No decorrer do curso esses dois conceitos, embora motivados de formas distintas, serão por mais

Leia mais

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica

Leia mais

Portal AEPQ Manual do utilizador

Portal AEPQ Manual do utilizador Pedro Gonçalves Luís Vieira Portal AEPQ Manual do utilizador Setembro 2008 Engenharia Informática - Portal AEPQ Manual do utilizador - ii - Conteúdo 1 Introdução... 1 1.1 Estrutura do manual... 3 1.2 Requisitos...

Leia mais

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2. Pg. 1 Universidade Federal do Espírito Santo - UFES Mestrado em Informática 2004/1 Projetos O Projeto O projeto tem um peso maior na sua nota final pois exigirá de você a utilização de diversas informações

Leia mais

Exemplo de Subtração Binária

Exemplo de Subtração Binária Exemplo de Subtração Binária Exercícios Converta para binário e efetue as seguintes operações: a) 37 10 30 10 b) 83 10 82 10 c) 63 8 34 8 d) 77 8 11 8 e) BB 16 AA 16 f) C43 16 195 16 3.5.3 Divisão binária:

Leia mais

Licenciatura em Engenharia Electrotécnica e de Computadores 1998/99. Erros

Licenciatura em Engenharia Electrotécnica e de Computadores 1998/99. Erros Licenciatura em Engenharia Electrotécnica e de Computadores Análise Numérica 1998/99 Erros Objectivos: Arredondar um número para n dígitos significativos. Determinar os erros máximos absoluto e relativo

Leia mais

Algoritmos e Programação _ Departamento de Informática

Algoritmos e Programação _ Departamento de Informática 5 TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. De um modo geral estas informações podem ser classificadas em dois tipos:

Leia mais

Objetos Estruturados Listas Recursão Exercícios. Inteligência Artificial

Objetos Estruturados Listas Recursão Exercícios. Inteligência Artificial Prolog Objetos Estruturados Objetos Estruturados Listas Recursão Exercícios Inteligência Artificial Exercícios Relembrando a introdução: 1. Escreva um programa Prolog para representar: João nasceu em Campos

Leia mais

Microsoft Access. No Access, existem vários tipos de objectos: Tabelas. Consultas. Formulários Relatórios Macros Módulos

Microsoft Access. No Access, existem vários tipos de objectos: Tabelas. Consultas. Formulários Relatórios Macros Módulos É um SGBD do tipo relacional para a utilização em windows. Ao abrirmos o Access, podemos efectuar várias operações: abrir uma base de dados existente, ou então criar uma nova base de dados. Se criarmos

Leia mais

Figura 13.1: Um exemplo de árvore de diretório.

Figura 13.1: Um exemplo de árvore de diretório. 13. Árvores W. Celes e J. L. Rangel Nos capítulos anteriores examinamos as estruturas de dados que podem ser chamadas de unidimensionais ou lineares, como vetores e listas. A importância dessas estruturas

Leia mais

FUNÇÃO COMO CONJUNTO R 1. (*)= ou, seja, * possui duas imagens. b) não é uma função de A em B, pois não satisfaz a segunda condição da

FUNÇÃO COMO CONJUNTO R 1. (*)= ou, seja, * possui duas imagens. b) não é uma função de A em B, pois não satisfaz a segunda condição da FUNÇÃO COMO CONJUNTO Definição 4.4 Seja f uma relação de A em B, dizemos que f é uma função de A em B se as duas condições a seguir forem satisfeitas: i) D(f) = A, ou seja, o domínio de f é o conjunto

Leia mais

Layouts Balanceamento de Linhas. Maria Antónia Carravilla

Layouts Balanceamento de Linhas. Maria Antónia Carravilla Layouts Balanceamento de Linhas Maria Antónia Carravilla Abril 1998 1. Layouts... 1 1.1 Definição, tipos de layouts... 1 1.1.1 Definição... 1 1.1.2 Factores determinantes para a construção de um layout...

Leia mais

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48 Conteúdo 1 Princípios de Contagem e Enumeração Computacional Permutações com Repetições Combinações com Repetições O Problema do Troco Principio da Casa dos Pombos > Princípios de Contagem e Enumeração

Leia mais

Sistemas Operativos: Deadlocks

Sistemas Operativos: Deadlocks Sistemas Operativos: Deadlocks Pedro F. Souto (pfs@fe.up.pt) March 30, 2012 Deadlocks Um deadlock é uma situação em que 2 ou mais processos ficam bloqueados indefinidamente pode ser uma race condition

Leia mais

Optimização Multi-critério para o Escalonamento de Operações Fabris

Optimização Multi-critério para o Escalonamento de Operações Fabris Unidade de Engenharia de Sistemas de Produção Campus da FEUP Rua Dr. Roberto Frias, 378 4200-465 Porto Tel. +351 22 2094300 Fax +351 22 2094350 E-mail uesp@inescporto.pt Web www.inescporto.pt/uesp Optimização

Leia mais

Somatórias e produtórias

Somatórias e produtórias Capítulo 8 Somatórias e produtórias 8. Introdução Muitas quantidades importantes em matemática são definidas como a soma de uma quantidade variável de parcelas também variáveis, por exemplo a soma + +

Leia mais

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003 Bases de Dados Introdução à linguagem SQL História Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R Renomeada para SQL (Structured Query Language) Standards ISO e ANSI SQL-86, SQL-89,

Leia mais

Algoritmos Genéticos (GA s)

Algoritmos Genéticos (GA s) Algoritmos Genéticos (GA s) 1 Algoritmos Genéticos (GA s) Dado um processo ou método de codificar soluções de um problema na forma de cromossomas e dada uma função de desempenho que nos dá um valor de

Leia mais

a 1 x 1 +... + a n x n = b,

a 1 x 1 +... + a n x n = b, Sistemas Lineares Equações Lineares Vários problemas nas áreas científica, tecnológica e econômica são modelados por sistemas de equações lineares e requerem a solução destes no menor tempo possível Definição

Leia mais