O documento discute vários tópicos relacionados à inteligência artificial, incluindo grafos e digrafos, problemas de busca, algoritmos de busca como breadth-first search e depth-first search, algoritmo A*, metaheurísticas como simulated annealing e algoritmos genéticos.
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
Estarei tratando aqui, como podemos utilizar a linguagem java, para acessar bancos de
dados. Os conceitos aqui discutidos, podem ser usados para criar aplicações, que acessem
diferentes base de dados, desde banco de dados relacionais, banco de dados orientados a
objetos ou até arquivos em textos plano. Utilizaremos os padrões de projeto Factory com
DAO(Data Access Object).
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
Estarei tratando aqui, como podemos utilizar a linguagem java, para acessar bancos de
dados. Os conceitos aqui discutidos, podem ser usados para criar aplicações, que acessem
diferentes base de dados, desde banco de dados relacionais, banco de dados orientados a
objetos ou até arquivos em textos plano. Utilizaremos os padrões de projeto Factory com
DAO(Data Access Object).
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
Fundamentos da Programação 13:
• Polimorfismo de subtipos
• Análise, desenho e implementação
Apresentação 13 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Clean Code e Object Calisthenics - Aplicados no PHPRafael Neris
Palestra realizada no Meetup Total PHP sobre Clean Code e Object Calisthenics aplicados no PHP.
Nesta palestra são apresentados conceitos importantes para manter seu código limpo e aplicar técnicas de refactoring para manter seu código organizado e performatico.
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
Curso de Estrutura de Dados e Algoritmos com Java Completo com Certificado e Fórum para dúvidas: http://loiane.training
Site: http://loiane.training
Blog: http://loiane.com
Facebook: https://www.facebook.com/loianegroner
Github: https://github.com/loiane
Twitter: https://twitter.com/loiane
Como Apresentar Codigo em Slides - Javou #7 - 2016Rafael Ponte
Todo programador cedo ou tarde deverá apresentar código em slides no trabalho, na faculdade ou em um evento. O problema é que apresentar código é bem diferente de escrevê-lo no seu editor preferido. Basta escolher o tamanho de fonte errada e você perde toda a atenção do seu público.
Para você não cair nessa armadilha, eu apresento 5 dicas matadoras para você apresentar código em slides de forma simples e eficiente. As dicas vão desde o tipo de fonte até tamanho e cores.
Esta palestra foi inspirada na palestra "How to present code in slides" do grande @myfear, https://twitter.com/myfear/status/727391833123336192
Perdeu a palestra? Segue resumo de cada uma das dicas: http://blog.triadworks.com.br/como-apresentar-codigo-em-slides
2. 2
Grafos e digrafos
Um objeto combinatório
conhecido como digrafo, ou grafo
dirigido, ou ainda grafo orientado.
Digrafos são importantes modelos
para uma grande variedade de
problemas de engenharia,
computação, matemática,
economia, biologia, etc.
27. 27
Algoritmo A* (Lê-se: A-estrela) é um
algoritmo para Busca de Caminho. Ele
busca o caminho em um grafo de um vértice
inicial até um vértice final. Ele é a
combinação de aproximações heurísticas
como do algoritmo Best-first Search e da
formalidade do Algoritmo de Dijkstra.
29. 29
package AStarSearch;
public class Edge {
public final double cost;
public final Node targetNode;
public Edge(Node targetNode, double cost) {
this.targetNode = targetNode;
this.cost = cost;
}
public double getCost() {
return cost;
}
public Node getTargetNode() {
return targetNode;
}
}
35. MetaHeurítica
Uma meta-heurística é um método
heurístico para resolver de forma
genérica problemas de otimização
(normalmente da área de otimização
combinatória).
Metaheurísticas são geralmente
aplicadas a problemas que não se
conhece algoritmo eficiente (veja
problemas NP-completos).
35
43. 43
A metaheurística usada é uma metáfora de
um processo térmico, dito annealing ou
recozimento, utilizado em metalurgia para
obtenção de estados de baixa energia num
sólido. O processo consiste de duas etapas:
na primeira, a temperatura do sólido é
aumentada para um valor próximo de 1100°C;
na segunda, o resfriamento deve ser realizado
lentamente até que o material se solidifique,
sendo acompanhado e controlado esse
arrefecimento. Nesta segunda fase,
executada lentamente, os átomos que
compõem o material organizam-se numa
estrutura uniforme com energia mínima. Isto
resulta em que os átomos desse material
ganhem energia para se movimentarem
livremente e, ao arrefecer de forma
controlada, dar-lhes uma melhor hipótese de
se organizarem numa configuração com
menor energia interna, para ter uma redução
dos defeitos do material, como resultado
prático.
44. 44
package com.balazsholczer.sa;
public class Constants {
private Constants(){
}
public static final double MIN_COORDINATE = -2;
public static final double MAX_COORDINATE = 2;
public static final double MIN_TEMPERATURE = 1;
public static final double START_TEMPERATURE = 100;
public static final double COOLING_RATE = 0.02;
}
45. 45
public class SimulatedAnnealing {
private Random randomGenerator;
private double currentCoordinateX;
private double nextCoordinateX;
private double bestCoordinateX;
public SimulatedAnnealing(){
this.randomGenerator = new Random();
}
47. 47
private double getRandomX() {
return randomGenerator.nextDouble()*(Constants.MAX_COORDINATE -
Constants.MIN_COORDINATE) + Constants.MIN_COORDINATE;
}
private double f(double x){
return (x-0.3)*(x-0.3)*(x-0.3)-5*x+x*x-2;
}
public double acceptanceProbability(double energy, double newEnergy, double
temperature) {
// If the new solution is better, accept it
if (newEnergy < energy) {
return 1.0;
}
// If the new solution is worse, calculate an acceptance probability
// T is small: we accept worse solutions with lower probability !!!
return Math.exp((energy - newEnergy) / temperature);
}