guileoline
Membro Pleno-
Posts
128 -
Cadastrado em
-
Última visita
Reputação
2-
Pessoal, bom dia. Não estou conseguindo implementar busca bidirecional na seguinte classe. Este algoritmo esta funcionando para matrizes até 3x7. Mas quando tento uma 8x8 que é O(n^64) fica inviavel... Alguem consegue me ajudar? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using PasseioCavalo.DataStructure; namespace PasseioCavalo { public class PCAgente : Graph { private int[] estadoInicial; private int lin; private int col; public int iteracoes = 0; public PCAgente(int[] EstadoInicial, int l, int c) { estadoInicial = EstadoInicial; lin = l; col = c; } public int[] ObterSolucao() { if(ObterPosicaoAtual(estadoInicial) < 0) { for (int i = 0; i < estadoInicial.Length; i++) { int[] estado = estadoInicial.Clone() as int[]; estado = 2; Node inicial = new Node(CriarNome(estado), estado); int[] solucao = BuscaSolucao(inicial); if (solucao != null) return solucao; } return null; } else{ return BuscaSolucao(new Node(CriarNome(estadoInicial), estadoInicial)); } } private int[] BuscaSolucao(Node inicial) { Queue<Node> queue = new Queue<Node>(); queue.Enqueue(inicial); this.AddNode(inicial); while (queue.Count > 0) { iteracoes++; Node node = queue.Dequeue(); if (AchouObjetivo(node)) { return GeraSolucao(node); } List<Node> estadosSucessores = FuncaoSucessor(node); foreach (Node n in estadosSucessores) { if (Find(n.Name) == null) { this.AddNode(n); this.AddEdge(n.Name, node.Name, 0); queue.Enqueue(n); } } } return null; } private List<Node> FuncaoSucessor(Node node) { List<Node> result = new List<Node>(); int[] estadoAtual = (int[])node.Info; int valor = ObterPosicaoAtual(estadoAtual); int l = valor / col; int c = valor % col; int lmax = lin - 1; int cmax = col - 1; if ((l + 2) <= lmax && (c + 1) <= cmax) { int pos = ((l + 2) * col) + (c + 1); int[] estado = estadoAtual.Clone() as int[]; if (estado[pos] != 1) { estado[valor] = 1; estado[pos] = 2; result.Add(new Node(CriarNome(estado), estado)); } } if ((l + 2) <= lmax && (c - 1) >= 0) { int pos = ((l + 2) * col) + (c - 1); int[] estado = estadoAtual.Clone() as int[]; if (estado[pos] != 1) { estado[valor] = 1; estado[pos] = 2; result.Add(new Node(CriarNome(estado), estado)); } } if ((l - 2) >= 0 && (c + 1) <= cmax) { int pos = ((l - 2) * col) + (c + 1); int[] estado = estadoAtual.Clone() as int[]; if (estado[pos] != 1) { estado[valor] = 1; estado[pos] = 2; result.Add(new Node(CriarNome(estado), estado)); } } if ((l - 2) >= 0 && (c - 1) >= 0) { int pos = ((l - 2) * col) + (c - 1); int[] estado = estadoAtual.Clone() as int[]; if (estado[pos] != 1) { estado[valor] = 1; estado[pos] = 2; result.Add(new Node(CriarNome(estado), estado)); } } if ((c + 2) <= cmax && (l + 1) <= lmax) { int pos = ((l + 1) * col) + (c + 2); int[] estado = estadoAtual.Clone() as int[]; if (estado[pos] != 1) { estado[valor] = 1; estado[pos] = 2; result.Add(new Node(CriarNome(estado), estado)); } } if ((c + 2) <= cmax && (l - 1) >= 0) { int pos = ((l - 1) * col) + (c + 2); int[] estado = estadoAtual.Clone() as int[]; if (estado[pos] != 1) { estado[valor] = 1; estado[pos] = 2; result.Add(new Node(CriarNome(estado), estado)); } } if ((c - 2) >= 0 && (l + 1) <= lmax) { int pos = ((l + 1) * col) + (c - 2); int[] estado = estadoAtual.Clone() as int[]; if (estado[pos] != 1) { estado[valor] = 1; estado[pos] = 2; result.Add(new Node(CriarNome(estado), estado)); } } if ((c - 2) >= 0 && (l - 1) >= 0) { int pos = ((l - 1) * col) + (c - 2); int[] estado = estadoAtual.Clone() as int[]; if (estado[pos] != 1) { estado[valor] = 1; estado[pos] = 2; result.Add(new Node(CriarNome(estado), estado)); } } return result; } private int ObterPosicaoAtual(int[] estado) { for (int i = 0; i < estado.Length; i++) if(estado==2) return i; return -1; } private int[] GeraSolucao(Node node) { List<Node> lista = this.DepthFirstSearch(node.Name); List<int> result = new List<int>(); for (int i = 0; i < lista.Count; i++) { Node n = lista; int[] estado = (int[])n.Info; for (int j = 0; j < estado.Length; j++) if (estado[j] == 2) { result.Add(j); break; } } result.Reverse(); return result.ToArray(); } private bool AchouObjetivo(Node node) { int[] estado = (int[])node.Info; int qtdeZero = 0; foreach (int i in estado) if (i == 0) qtdeZero++; return qtdeZero == 0 ? true : false; } private string CriarNome(int[] valor) { string nome = ""; foreach (int i in valor) nome += i.ToString(); return nome; } } }
-
Boa tarde pessoa, Estou precisando desenvolver um script que permita inserir numero de patrimonio na bios e obter informações sobre hardware (processador, memoria) Estava fazendo com as classes WMI do windows, porém como faço no caso de linux?
-
Upgrades -> Até R$ 500 - Obrigatório ler o PRIMEIRO POST!!
guileoline respondeu ao tópico de V i X em Montagem e upgrade de computadores de mesa
Ocorre em qualquer jogo. Até CS 1.6 com 999999fps. Uso somente fullHD -
Radeon HD 6950 - Reviews e características técncias
guileoline respondeu ao tópico de Diego Paladin em Placas de vídeo
Todos os jogos. Não importa se for CS 1.6, com 999 FPS fica a imagem tremida. Ja tentei atualizar todo tipo de driver, bios, limpeza... Só nao tenho como testar com outro proc e placa-mãe -
Radeon HD 6950 - Reviews e características técncias
guileoline respondeu ao tópico de Diego Paladin em Placas de vídeo
Galera, Tenho: - Proc i3 2100 - placa mãe IPHM61R1 - 6gb memoria ddr3 (2+4) - Hd 6950 2gb OC - HD sata 2 500gb - Fonte sasonic s12 520W Jogo em full HD. O desempenho do conjunto não está satisfatório. Mesmo quando o fps fica por volta de 50, as imagens ficam ruins como se tivessem 20fps. Ja testei em outros monitores, e o problema persiste. Pode ser o proc gargalando? ou a placa-mãe ruim? pois conheco pessoas que tem muito mais fps com a HD6950 e i3 -
Upgrades -> Até R$ 500 - Obrigatório ler o PRIMEIRO POST!!
guileoline respondeu ao tópico de V i X em Montagem e upgrade de computadores de mesa
Galera, Tenho: - Proc i3 2100 - placa mãe IPHM61R1 - 6gb memoria ddr3 (2+4) - Hd 6950 2gb OC - HD sata 2 500gb - Fonte sasonic s12 520W O desempenho do conjunto não está satisfatório. Mesmo quando o fps fica por volta de 50, as imagens ficam ruins como se tivessem 20fps. Ja testei em outros monitores, e o problema persiste. Só não tenho como testar com outro processador ou placa mãe. Por isso preciso de recomendações para trocar essas peças -
Upgrades de R$ 500 até R$ 1000
guileoline respondeu ao tópico de V i X em Montagem e upgrade de computadores de mesa
vale a pena ir atras do i5 2500 no meu caso? -
Upgrades de R$ 500 até R$ 1000
guileoline respondeu ao tópico de V i X em Montagem e upgrade de computadores de mesa
O modelo da minha placa mãe eu coloquei errado, o correto é Processador: Intel Core i3 2100 Placa Mãe: PC Ware IPMH61R2 Memória: Kingston 8GB ddr3 HD: Samsung 1TB Placa de Video: HD 6950 2gb se eu mudar apenas de processador vou ter problemas com a placa-mãe? -
Upgrades de R$ 500 até R$ 1000
guileoline respondeu ao tópico de V i X em Montagem e upgrade de computadores de mesa
quero dar um up no meu pc para jogar bf4 Processador: Intel Core i3 2100 Placa Mãe: MSI H61M-P21 Memória: Kingston 8GB ddr3 HD: Samsung 1TB Placa de Video: HD 6950 2gb Preciso de recomendações de processadores e placa-mãe, o uso é especialmente jogos. -
Seasonic 430W ou XFX 450w ou sugestoes no valor proximo a R$186,00 para essa config Processador: Intel Core i3 2120 Placa Mãe: MSI H61M-P21 Memória: Kingston 4GB HD: Samsung 1TB Placa de Video: ECS GTX560ti DVD-r: __________________________________________________ _ aproveitando, alguem indique uma fonte mais barata possivel que aguente um phenom x3 845 2gb ram HD 320 e 9800gt Gabinete: CM Elite 335
-
Pessoal, fiz um rascunho do q esse roteador precisa fazer. Meus parentes moram perto. Entre as casas nao existem outras barreiras, apenas as q estão no desenho. Qm souber me falar se esse router iria me ajudar eu agradeço. EDIT: Usaria somente nos churrascos mesmo rsrs. Nao precisa ter sinal 1000%, quero apenas q conecte a internet
-
Comprei o meu, agora é esperar 12 dias =/
-
Pessoal vocês acham q esse router consegue fazer o q eu qero? Tenho 2 notebooks, um é b/g o outro b/g/n e um desktop, Quero usar os 2 notebooks pelo wireless e o desk pelo cabo. Minha net é speedy 2mb. Um notebook fica na sala e o outro fica em um escritorio, entre eles tem 3 paredes, o sinal ficaria bom? qual a distancia maxima(indoor e outdoor)? Caso esse nao resolva minha situacao, me indiquem outro
-
Mas o funcionario ja vai ter q passar o numero do meu CPF, cartao, sei lá mais u q....? E a NF fica no meu nome?
-
Pra comprar com o desconto de funcionario é so pedir pra um conhecido funcionario me indicar, depois eles vão ligar pra mim pra passar os dados? ou eu tenho q pedir para essa pessoa ja comprar com o meu cartao, endereco, etc?
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais