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 lpreis@fe.up.pt 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Representação de Dados

Representação de Dados Representação de Dados Introdução Todos sabemos que existem diferentes tipos de números: fraccionários, inteiros positivos e negativos, etc. Torna-se necessária a representação destes dados em sistema

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO PROGRAMA DE EDUCAÇÃO TUTORIAL - MATEMÁTICA PROJETO FUNDAMENTOS DE MATEMÁTICA ELEMENTAR

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO PROGRAMA DE EDUCAÇÃO TUTORIAL - MATEMÁTICA PROJETO FUNDAMENTOS DE MATEMÁTICA ELEMENTAR UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO PROGRAMA DE EDUCAÇÃO TUTORIAL - MATEMÁTICA PROJETO FUNDAMENTOS DE MATEMÁTICA ELEMENTAR Assuntos: Matrizes; Matrizes Especiais; Operações com Matrizes; Operações Elementares

Leia mais

Tarefa Orientada 10 Obter informação a partir de uma tabela

Tarefa Orientada 10 Obter informação a partir de uma tabela Tarefa Orientada 10 Obter informação a partir de uma tabela Objectivos: Consultar dados de uma tabela Utilizar operadores aritméticos, relacionais, lógicos, de concatenação de cadeias de caracteres, LIKE

Leia mais

Ferramenta de Testagem IECL Orientações para o Aluno (PT)

Ferramenta de Testagem IECL Orientações para o Aluno (PT) Ferramenta de Testagem IECL Orientações para o Aluno (PT) Índice 1 INTRODUÇÃO 3 2 REALIZAÇÃO DOS TESTES 3 2.1 Login 3 2.2 Verificação do áudio para o teste de Audição 5 2.3 Realização de um teste 5 3 Informação

Leia mais

Escola Secundária Infanta D. Maria Folha de cálculo Tarefa 4. Tarefa Excel Nº 4

Escola Secundária Infanta D. Maria Folha de cálculo Tarefa 4. Tarefa Excel Nº 4 Tarefa Excel Nº 4 Objectivos: Utilização de fórmulas simples numa folha de cálculo O botão Soma automática Referências relativas, absolutas e mistas Inserir funções numa folha de cálculo Copiar fórmulas

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

Algumas vantagens da Teoria das Descrições Definidas (Russel 1905)

Algumas vantagens da Teoria das Descrições Definidas (Russel 1905) Textos / Seminário de Orientação - 12 de Março de 2005 - Fernando Janeiro Algumas vantagens da Teoria das Descrições Definidas (Russel 1905) Assume-se que o objecto de uma teoria semântica é constituído

Leia mais

Aritmética Binária e. Bernardo Nunes Gonçalves

Aritmética Binária e. Bernardo Nunes Gonçalves Aritmética Binária e Complemento a Base Bernardo Nunes Gonçalves Sumário Soma e multiplicação binária Subtração e divisão binária Representação com sinal Sinal e magnitude Complemento a base. Adição binária

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

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Consistem num conjunto de apontadores para instâncias especificas de cada relação. Mecanismo usado para mais fácil e rapidamente aceder à informação existente numa base de dados. Bases de Dados de elevadas dimensões. Consistem num conjunto de apontadores para instâncias especificas de

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

Módulo de Administração de Utilizadores

Módulo de Administração de Utilizadores base Módulo de Administração de Utilizadores Versão 2.0 Manual do utilizador Janeiro 2002 Ficha técnica Título BIBLIObase : Módulo de Administração de Utilizadores: versão 2.0 : manual do utilizador Autores

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

1 Máquina URM, comandos e programas URM

1 Máquina URM, comandos e programas URM 1 Máquina URM, comandos e programas URM Definição 1 : Máquina URM (Unlimited Register Machine) Uma máquina URM é constituída por uma sucessão de registos 2 < R i > i IN. Cada registo pode conter um valor

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

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1 Conteúdo Página Operações Lógicas Binárias: AND, OR...2 Operações Lógicas Binárias: OR Exclusivo (XOR)...3 Contatos Normalmente Abertos e Normalmente Fechados. Sensores e Símbolos... 4 Exercício...5 Resultado

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

Diagrama de Precedências

Diagrama de Precedências Planeamento Industrial Aula 06 Implantações por produto:.equilibragem de linhas de montagem Implantações por processo:. minimização dos custos de transporte. método craft. análise de factores Diagrama

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

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

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

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

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

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

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

Capítulo Tabelas e Gráficos

Capítulo Tabelas e Gráficos Capítulo O menu de tabelas e gráficos torna possível criar tabelas numéricas de funções guardadas na memória. Poderá também utilizar funções múltiplas para criar tabelas. Como utiliza a mesma lista de

Leia mais

Diagrama de transição de Estados (DTE)

Diagrama de transição de Estados (DTE) Diagrama de transição de Estados (DTE) O DTE é uma ferramenta de modelação poderosa para descrever o comportamento do sistema dependente do tempo. A necessidade de uma ferramenta deste tipo surgiu das

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

PPD: Balanceamento de Carga e Scheduling 2

PPD: Balanceamento de Carga e Scheduling 2 PPD: Balanceamento de Carga e Scheduling 2 Fernando Silva DCC-FCUP 2 (Alguns dos slides são baseados nos de Kathy Yelick, www.cs.berkeley.edu/ yelick) Fernando Silva (DCC-FCUP) PPD: Balanceamento de Carga

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

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

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

O AMBIENTE DE TRABALHO DO WINDOWS

O AMBIENTE DE TRABALHO DO WINDOWS O AMBIENTE DE TRABALHO DO WINDOWS O Windows funciona como um Sistema Operativo, responsável pelo arranque do computador. Um computador que tenha o Windows instalado, quando arranca, entra directamente

Leia mais

Aula 03 Custos de um algoritmo e funções de complexidade

Aula 03 Custos de um algoritmo e funções de complexidade BC1424 Algoritmos e Estruturas de Dados I Aula 03 Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2015 1 Custo de um algoritmo e funções de complexidade

Leia mais

Autómatos Finitos Determinísticos

Autómatos Finitos Determinísticos Ficha 2 Autómatos Finitos Determinísticos 2.1 Introdução Se olharmos, de forma simplificada, para um computador encontramos três componentes principais: a) A unidade de processamento central b) As unidades

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

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

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal

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

por João Gomes, Director Executivo do Instituto de Planeamento e Desenvolvimento do Turismo e Professor Associado da Universidade Fernando Pessoa

por João Gomes, Director Executivo do Instituto de Planeamento e Desenvolvimento do Turismo e Professor Associado da Universidade Fernando Pessoa COMO AUMENTAR AS RECEITAS DE UM NEGÓCIO: O CONCEITO DE GESTÃO DE RECEITAS (revenue management) (Publicado na Revista Hotéis de Portugal Maio/Junho 2004) por João Gomes, Director Executivo do Instituto

Leia mais

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira MICROSOFT ACCESS MICROSOFT ACCESS Professor Rafael Vieira Professor Rafael Vieira - Access - Programa de base de dados relacional funciona em Windows Elementos de uma Base de Dados: Tabelas Consultas Formulários

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

Introdução aos cálculos de datas

Introdução aos cálculos de datas Page 1 of 7 Windows SharePoint Services Introdução aos cálculos de datas Aplica-se a: Microsoft Office SharePoint Server 2007 Ocultar tudo Você pode usar fórmulas e funções em listas ou bibliotecas para

Leia mais

Análise de complexidade

Análise de complexidade Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura

Leia mais

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores Primeiro Teste 21 de Outubro de 2006, 9:00H 10:30H Nome: Número:

Leia mais

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação FaculdadedeCiências UniversidadeAgostinhoNeto DepartamentodeMatemáticaeEngenhariaGeográfica CiênciasdaComputação ProgramaçãoII SegundaParte Adaptado de um original dos docentes de ISCTE Objectivos Os alunos

Leia mais

ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário. As Normas da família ISO 9000. As Normas da família ISO 9000

ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário. As Normas da família ISO 9000. As Normas da família ISO 9000 ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário Gestão da Qualidade 2005 1 As Normas da família ISO 9000 ISO 9000 descreve os fundamentos de sistemas de gestão da qualidade e especifica

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

2. A FERRAMENTA SOLVER (EXCEL)

2. A FERRAMENTA SOLVER (EXCEL) Faculdade de Engenharia Eng. Celso Daniel Engenharia de Produção 2. A FERRAMENTA SOLVER (EXCEL) Diversas ferramentas para solução de problemas de otimização, comerciais ou acadêmicos, sejam eles lineares

Leia mais

Tarefa 18: Criar Tabelas Dinâmicas a partir de Listas de Excel

Tarefa 18: Criar Tabelas Dinâmicas a partir de Listas de Excel Tarefa 18: Criar Tabelas Dinâmicas a partir de 1. Alguns conceitos sobre Tabelas Dinâmicas Com tabelas dinâmicas podemos criar dinâmica e imediatamente resumos de uma lista Excel ou de uma base de dados

Leia mais

FICHA ORIENTADA Nº1. Barra de fórmulas. Área de trabalho T E C N O L O G I A S D E I N F O R M A Ç Ã O E C O M U N I C A Ç Ã O

FICHA ORIENTADA Nº1. Barra de fórmulas. Área de trabalho T E C N O L O G I A S D E I N F O R M A Ç Ã O E C O M U N I C A Ç Ã O T E C N O L O G I A S D E I N F O R M A Ç Ã O E C O M U N I C A Ç Ã O FICHA ORIENTADA Nº1 INTRODUÇÃO À FOLHA DE CÁLCULO CRIAÇÃO DE UMA FOLHA DE CÁLCULO O Microsoft Excel é um programa que faz parte das

Leia mais

Banco de Dados I 2007. Módulo II: Modelagem Entidade- Relacionamento versus Relacional. (Aula 3) Clodis Boscarioli

Banco de Dados I 2007. Módulo II: Modelagem Entidade- Relacionamento versus Relacional. (Aula 3) Clodis Boscarioli Banco de Dados I 2007 Módulo II: Modelagem Entidade- Relacionamento versus Relacional (Aula 3) Clodis Boscarioli Agenda: Exercícios de Mapeamento ME-R para MR; Restrições de Domínio; Restrições de Chave

Leia mais

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá. INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,

Leia mais

ALGORITMOS. Supervisão: Prof. Dr.º Denivaldo Lopes

ALGORITMOS. Supervisão: Prof. Dr.º Denivaldo Lopes Laboratory of Software Engineering and Computer Network Engineering for a better life Universidade Federal do Maranhão Curso de Engenharia Elétrica ALGORITMOS Supervisão: Prof. Dr.º Denivaldo Lopes Adelman

Leia mais

1. Ambiente de Trabalho

1. Ambiente de Trabalho 1 Ambiente de Trabalho 1. Ambiente de Trabalho Ao nível do ambiente de trabalho, depois de o Excel 2007 ter introduzido novos componentes (e.g., Botão Office e Friso) e eliminado alguns dos componentes

Leia mais

UNIDADE 2: Sistema Operativo em Ambiente Gráfico

UNIDADE 2: Sistema Operativo em Ambiente Gráfico Ambiente Gráfico Configurações Acessórios O Sistema Operativo (SO) é o conjunto de programas fundamentais que permitem que o computador funcione e que comunique com o exterior. Actualmente o Windows é

Leia mais

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I. 2002 Juliana F. Camapum Wanderley

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I. 2002 Juliana F. Camapum Wanderley Organização e Arquitetura de Computadores Aula 10 Ponto Flutuante Parte I 2002 Juliana F. Camapum Wanderley http://www.cic.unb.br/docentes/juliana/cursos/oac OAC Ponto Flutuante Parte I - 1 Panorama Números

Leia mais