Foro de elhacker.net

Programación => Java => Mensaje iniciado por: bengy en 23 Septiembre 2012, 03:16 am



Título: Inteligencia Artificial
Publicado por: bengy en 23 Septiembre 2012, 03:16 am
Me podria ayudar con encontrar un codigo en java
de "Busqueda preferente por amplitud"???
gracias de antemano...


Título: Re: Inteligencia Artificial
Publicado por: [Case] en 23 Septiembre 2012, 06:46 am
Ese algoritmo es muy sencillo de implementar una vez tiendo el objeto árbol.
¿Que es lo que no entiendes de el?


Título: Re: Inteligencia Artificial
Publicado por: bengy en 23 Septiembre 2012, 14:44 pm
no conozco bien el algoritmo...


Título: Re: Inteligencia Artificial
Publicado por: farresito en 23 Septiembre 2012, 16:03 pm
No debería responderte. Acaso no sabes usar Google? Primera búsqueda que hago y resultados:

http://www.google.com/search?q=Breadth+first+search&sugexp=chrome,mod=10&sourceid=chrome&ie=UTF-8#hl=es-419&sclient=psy-ab&q=Breadth+first+search+java&oq=Breadth+first+search+java&gs_l=serp.3..0j0i30l3.1637.3998.0.4113.7.3.1.3.3.0.76.223.3.3.0...0.0...1c.1.Njzzyb3VvTE&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.&fp=55543b579dc00919&biw=1280&bih=649

Si no conoces bien el algoritmo, usas la Wikipedia:

http://en.wikipedia.org/wiki/Breadth-first_search#Algorithm

Aquí hay más de uno que sufre de pereza aguda.


Título: Re: Inteligencia Artificial
Publicado por: bengy en 28 Septiembre 2012, 05:33 am
descargue este code de esta pagina:   http://www.javacoffeebreak.com/tutorials/aisearch/chapter6.html
y lo compile pero no funciona alguien puede hacerlo funcionar???
porque intente e intente y nada....
Código:
// SearchApplet.java //
 // This class is an abstract class for defining search // algorithm classes. // // Copyright Mark Watson, 1998. Open Source and Open Content. //
 import java.awt.*;
 import java.awt.event.*;
 import java.util.Vector;
 abstract public class SearchApplet extends java.applet.Applet {
     public void init() {
         String width = getParameter("pwidth");
         if (width == null) {
             xSizePixels = 80; }
             else {
                 xSizePixels = Integer.valueOf(width).intValue();
                }
                String height = getParameter("pheight");
                if (height == null) {
                    ySizePixels = 80;
                }
                else {
                    ySizePixels = Integer.valueOf(height).intValue();
                }
                System.out.println("width=" + xSizePixels + ", height=" + ySizePixels); setLayout(null);
                startChoice = new Choice();
                goalChoice = new Choice();
                for (int i=0; i<numNodes; i++) {
                    startChoice.add(nodeNames[i]);
                    goalChoice.add(nodeNames[i]); }
                    startChoice.select(0);
                    goalChoice.select(numNodes - 1);
                    Label l1 = new Label("Starting node:");
                    Label l2 = new Label("Goal node:");
                    l1.setBounds(5, 10, 90, 24);
                    startChoice.setBounds(100, 10, 50, 30);
                    l2.setBounds(5, 50, 90, 24);
                    goalChoice.setBounds(100, 50, 50, 30);
                    timeDelayChoice = new Choice();
                    timeDelayChoice.add("No plot time delay");
                    timeDelayChoice.add("Plot time delay");
                    timeDelayChoice.setBounds(160, 10, 90, 24);
                    timeDelayChoice.select(1); add(l1);
                    add(l2);
                    add(startChoice);
                    add(goalChoice);
                    add(timeDelayChoice);
                    Button b = new Button("Run");
                    b.setBounds(160, 50, 90, 32);
                    add(b);
                    b.addMouseListener(new java.awt.event.MouseAdapter()
                    { public void mouseClicked(MouseEvent me) {
                        int i1 = startChoice.getSelectedIndex();
                        int i2 = goalChoice.getSelectedIndex();
                        startNodeIndex = i1;
                        goalNodeIndex = i2;
                        System.out.println("mouse clicked " + i1 + " " + i2);
                        findPath(i1, i2); } } );
                        canvas = new Canvas();
                        //
                       // Panel pp = new Panel();
                        add(canvas);
                        canvas.setBounds(5, 80, xSizePixels + 20, ySizePixels + 20);
                        add(canvas); repaintPath(null, 0);
                        setBackground(Color.white);
                    }
                    protected Choice startChoice, goalChoice, timeDelayChoice;
                    private Canvas canvas;
                    private int goalNodeIndex = -1,
                    startNodeIndex = -1;
                    public void repaintPath(int [] path, int num) {
                        System.out.print("repaintPath(");
                        boolean time_delay = timeDelayChoice.getSelectedIndex() == 1;
                        for (int i=0; i<num; i++) {
                            System.out.print(path[i]); if (i < (num - 1)) System.out.print(", ");
                        } System.out.println(")");
                        Graphics g = canvas.getGraphics();
                        g.setColor(Color.black);
                        float x_scale = (float)xSizePixels / (x_max - x_min);
                        float y_scale = (float)ySizePixels / (y_max - y_min);
                        // start by plotting nodes and links:
                        for (int i=0; i<numLinks; i++) {
                            int i1 = link_1[i];
                            int i2 = link_2[i];
                            int x1 = (int)(node_x[i1] * x_scale);
                            int x2 = (int)(node_x[i2] * x_scale);
                            int y1 = (int)(node_y[i1] * y_scale);
                            int y2 = (int)(node_y[i2] * y_scale);
                            g.drawLine(x1 + 10, y1 + 10, x2 + 10, y2 + 10);
                            g.drawLine(x1 + 10, y1 + 11, x2 + 10, y2 + 11); }
                            for (int i=0; i<numNodes; i++) {
                                int x1 = (int)(node_x[i] * x_scale);
                                int y1 = (int)(node_y[i] * y_scale);
                                if (i == startNodeIndex)
                                g.setColor(Color.green);
                                else if (i == goalNodeIndex)
                                g.setColor(Color.blue);
                                else g.setColor(Color.black);
                                paintNode(g, nodeNames[i], x1 + 10, y1 + 10); }
                                if (path == null)
                                return;
                                // set line color to red:
                                g.setColor(Color.red);
                                for (int i=0; i<num - 1; i += 2) {
                                    int x1 = (int)(node_x[path[i]] * x_scale);
                                    int x2 = (int)(node_x[path[i+1]] * x_scale);
                                    int y1 = (int)(node_y[path[i]] * y_scale);
                                    int y2 = (int)(node_y[path[i+1]] * y_scale);
                                    g.drawLine(x1 + 10, y1 + 10, x2 + 10, y2 + 10);
                                    g.drawLine(x1 + 10, y1 + 11, x2 + 10, y2 + 11); }
                                    if (time_delay) {
                                        try {
                                            Thread.sleep(1000);
                                        } catch (Exception e) { } }
                                    }
                                    public void repaintPath(int [] path) {
                                        repaintPath(path, path.length);
                                    }
                                    protected void paintNode(Graphics g, String name, int x, int y) {
                                        int len = name.length() * 10 + 6;
                                        int x1 = x - (len / 2);
                                        int x2 = x + (len / 2);
                                        int y1 = y - 10;
                                        int y2 = y + 10;
                                        g.setColor(Color.cyan);
                                        g.fill3DRect(x1, y1, len, 20, true);
                                        g.setColor(Color.black);
                                        g.drawString(name, x1 + 4, y2 - 6);
                                    }
                                    public void paint(Graphics g) {
                                        super.paint(g);
                                        repaintPath(null, 0);
                                    }
                                    public void addNode(String name, float x, float y) {
                                        System.out.println("Adding node: " + name + ", " + x + ", " + y);
                                        nodeNames[numNodes] = name;
                                        node_x[numNodes] = x;
                                        node_y[numNodes] = y;
                                        numNodes++;
                                        if (x < x_min)
                                        x_min = x;
                                        if (x > x_max)
                                        x_max = x;
                                        if (y < y_min)
                                        y_min = y;
                                        if (y > y_max)
                                        y_max = y;
                                    }
                                    public String getNodeName(int index)
                                    {
                                        try {
                                            return nodeNames[index];
                                        } catch (Exception e)
                                        { System.out.println("Error in getNodeName: " + e);
                                        } return "no name";
                                        // error condition
                                    }
                                    public float getNodeX(int index)
                                    {
                                        try {
                                            return node_x[index]; }
                                            catch (Exception e) {
                                                System.out.println("Error in getNodePosition: " + e); }
                                                return 0.0f;
                                                // error condition
                                            }
                                            public float getNodeY(int index) {
                                                try {
                                                    return node_y[index]; }
                                                    catch (Exception e)
                                                    {
                                                        System.out.println("Error in getNodePosition: " + e);
                                                    } return 0.0f;
                                                    // error condition
                                                }
                                                public float getPathLength(int index) {
                                                    // currently unsued - for adding heuristics
                                                    return lengths[index]; }
                                                    public void addLink(int node1, int node2) {
                                                        link_1[numLinks] = node1;
                                                        link_2[numLinks] = node2;
                                                        float dist_squared = (node_x[node1] - node_x[node2]) * (node_x[node1] - node_x[node2]) + (node_y[node1] - node_y[node2]) * (node_y[node1] - node_y[node2]);
                                                        lengths[numLinks] = (float)Math.sqrt(dist_squared);
                                                        numLinks++; }
                                                        public void addLink(String name1, String name2) {
                                                            int index1 = -1, index2 = -1;
                                                            for (int i=0; i<numNodes; i++) {
                                                                if (name1.equals(nodeNames[i]))
                                                                index1 = i;
                                                                if (name2.equals(nodeNames[i]))
                                                                index2 = i;
                                                            }
                                                            if (index1 != -1 && index2 != -1)
                                                            addLink(index1, index2);
                                                        }
                                                        /** findPath - abstract method that is defined in subclasses */
                                                        abstract public int [] findPath(int node_1, int node_2);
                                                        // return an array of node indices
                                                        protected int getNodeIndex(String name) {
                                                            for (int i=0; i<numNodes; i++) {
                                                                if (name.equals(nodeNames[i]))
                                                                return i;
                                                            }
                                                            return -1;
                                                            // error condition
                                                        }
                                                        final public static int MAX = 50;
                                                        // max number of nodes and max number of links // for nodes:
                                                        private String [] nodeNames = new String[MAX];
                                                        private float [] node_x = new float[MAX];
                                                        private float [] node_y = new float[MAX];
                                                        // for links between nodes:
                                                        protected int [] link_1 = new int[MAX];
                                                        protected int [] link_2 = new int[MAX];
                                                        private float [] lengths = new float[MAX];
                                                        protected int numNodes = 0;
                                                        protected int numLinks = 0;
                                                        // For optional display of search progress:
                                                        private int xSizePixels = 0, ySizePixels = 0;
                                                        private float x_min = 0.0f, x_max = 0.1f;
                                                        private float y_min = 0.0f, y_max = 0.1f;
                                                    }


Título: Re: Inteligencia Artificial
Publicado por: [Case] en 28 Septiembre 2012, 06:00 am
Seria mejor que nos dijeras cual es la salida del compilador.
En lugar de nosotros buscar a ciegas


Título: Re: Inteligencia Artificial
Publicado por: bengy en 29 Septiembre 2012, 02:07 am
pueden revisar esta pagina.... http://www.javacoffeebreak.com/tutorials/aisearch/chapter6.html

en la pagina se encuentra el grafico que es generado por este code


Título: Re: Inteligencia Artificial
Publicado por: bengy en 1 Octubre 2012, 01:54 am
ayuda porfavor!!!
cualquier sugerencia es bienvenida!!!


Título: Re: Inteligencia Artificial
Publicado por: MauroMasciar en 1 Octubre 2012, 02:10 am
Seria mejor que nos dijeras cual es la salida del compilador.
En lugar de nosotros buscar a ciegas


ayuda porfavor!!!
cualquier sugerencia es bienvenida!!!

Seguimos esperando los detalles de tu problema.


Título: Re: Inteligencia Artificial
Publicado por: bengy en 1 Octubre 2012, 04:36 am
descargue este code de esta pagina:   http://www.javacoffeebreak.com/tutorials/aisearch/chapter6.html
y lo compile pero no funciona alguien puede hacerlo funcionar???
porque intente e intente y nada....


Título: Re: Inteligencia Artificial
Publicado por: elkiy en 1 Octubre 2012, 21:31 pm
bueno compilalo de nuevo y copia y pega lo que te dice el error.


Título: Re: Inteligencia Artificial
Publicado por: ChavalChavito en 5 Octubre 2012, 04:55 am
pfff somos ciervos tuyos o adivinos?