Artificial Intelligence - هوش مصنوعی  
انجمن را در گوگل محبوب کنيد :

بازگشت   Artificial Intelligence - هوش مصنوعی > مقدمات هوش مصنوعی > حل مسائل معروف هوش مصنوعي


 
تبليغات سايت
Iranian Association for the Advancement of Artificial Intelligence
ارسال تاپيک جديد  پاسخ
 
LinkBack ابزارهاي تاپيک نحوه نمايش
قديمي ۰۳-۱۳-۱۳۸۹, ۰۴:۰۶ بعد از ظهر   #11 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Cool Genetic algorithm on 8-puzzle problem

كد براي حل مسثله معماي 8 به روش الگوريتم ژنتيك

اين برنامه خيلي ابتدايي بوده و جنبه آموزشي دارد.
در محيط MC++ بوده و نتيجه را در محيط console ارائه مي كند .
برنامه تلاش مي كند تا با كمترين حركات ممكن از حالت اوليه به حالت نهايي برسد و در صورت موجود بودن يك راه بين دو حالت دنباله حركت ها را ارائه مي دهد و در غير اينصورت كمترين فاصله ي "منهتن"(manhattan) ممكن بين دو حالت را ارائه مي كند .
اين برنامه به صورت كد باز در اينجا ارئه مي شود و هر كسي با ديد آموزشي مجاز به تغيير و شير آن مي باشد .
تولید کننده: رامين شكري كلان
فايل ضميمه
نوع فايل: zip Solving 8-puzzle Problem Using Genetic Algorithm-Ramin.S.Kalan.zip (3.4 كيلو بايت, 675 نمايش)
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
ayfer.a11 (۰۸-۴-۱۳۹۰), djmorteza (۰۲-۲۹-۱۳۹۲), ehsan_teimouri (۰۲-۲۶-۱۳۹۲), green_Dream (۰۱-۹-۱۳۹۰), Mehdi211 (۰۳-۱۴-۱۳۹۸), nasersalehiazar (۰۸-۲۴-۱۳۸۹)

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online  
قديمي ۰۳-۲۴-۱۳۸۹, ۰۸:۲۴ بعد از ظهر   #12 (لینک دائم)
Active users
 
آواتار green_Dream
 
تاريخ عضويت: بهمن ۱۳۸۸
پست ها: 16
تشكرها: 228
35 تشكر در 4 پست
My Mood: Khejalati
پيش فرض

با سلام

خواهشا،ملتمسانه اگر كسي از دوستان گرامي ، معماي 8 پازل رو به روشهاي A*,*IDA,greedy search , BFS به زبان C#داره تو فروم بذاره
green_Dream آفلاين است   پاسخ با نقل قول
قديمي ۰۳-۲۴-۱۳۸۹, ۰۸:۵۱ بعد از ظهر   #13 (لینک دائم)
Administrator
 
آواتار mardin200
 
تاريخ عضويت: آذر ۱۳۸۸
محل سكونت: تهران
پست ها: 309
تشكرها: 120
1,748 تشكر در 263 پست
My Mood: Mehrabon
Wink

نقل قول:
نوشته اصلي بوسيله green_Dream نمايش پست
با سلام

خواهشا،ملتمسانه اگر كسي از دوستان گرامي ، معماي 8 پازل رو به روشهاي A*,*IDA,greedy search , BFS به زبان C#داره تو فروم بذاره
دوست عزیز در این تاپیک قرار داده شده
امیدوارم بدردتون بخوره
mardin200 آفلاين است   پاسخ با نقل قول
از mardin200 تشكر كرده اند:
green_Dream (۰۴-۱۸-۱۳۸۹), nasersalehiazar (۰۸-۲۴-۱۳۸۹)
قديمي ۰۳-۲۵-۱۳۸۹, ۰۷:۲۰ بعد از ظهر   #14 (لینک دائم)
Active users
 
آواتار محمد شمس
 
تاريخ عضويت: ارديبهشت ۱۳۸۸
محل سكونت: www.mshams.ir
پست ها: 16
تشكرها: 1
18 تشكر در 10 پست
My Mood: Shad
پيش فرض

نقل قول:
نوشته اصلي بوسيله reyhane نمايش پست
اميدوارم لينک زيرمفيد باشه

genetic 8-puzzle
سلام


زمان مورد نیاز آن برای حل، خیلی زیاد است. در واقع اصلا بهینه نیست.
محمد شمس آفلاين است   پاسخ با نقل قول
از محمد شمس تشكر كرده است:
Astaraki (۰۳-۲۵-۱۳۸۹)
قديمي ۰۴-۲۲-۱۳۸۹, ۰۲:۱۳ بعد از ظهر   #15 (لینک دائم)
Active users
 
آواتار green_Dream
 
تاريخ عضويت: بهمن ۱۳۸۸
پست ها: 16
تشكرها: 228
35 تشكر در 4 پست
My Mood: Khejalati
پيش فرض

با سلام و احترام

بينهايت ممنون ميشم اگه درمورد شبه كد يا سورس برنامه 8پازل به روش حريصانه و ida*توضيح دهيدچون روشهاي ديگر جستجو براي مطالعه و فهم دقيق به وفور در اينترنت يافت ميشود ولي هيچ سايتي درباره اين دو روش چيزي ننوشته اند

با تشكر
green_Dream آفلاين است   پاسخ با نقل قول
قديمي ۰۵-۲۰-۱۳۸۹, ۱۰:۱۰ قبل از ظهر   #16 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink به زبان جاوا

Solution of the 8-puzzle using iterative deepening A* (IDA*) search

كد:
/*
	Author:	James Pate Williams, Jr.

	Solution of 8-puzzle using IDA* search
*/

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Puzzle8IPanel extends JPanel {
	char[] s;
	int deltaX, deltaY;
	int x0, x1, y0, y1;
	
	public Puzzle8IPanel(int iWidth, int iHeight, char[] solution) {
		x0 = iWidth / 8;
		x1 = 7 * x0;
		y0 = iHeight / 8;
		y1 = 7 * y0;
		deltaX = (x1 - x0) / 3;
		deltaY = (y1 - y0) / 3;
		s = new char[9];
		s = solution;
	}
	
	public void sevenSegmentDisplay(Graphics g, char digit,
		int x, int y, int xUnit, int yUnit) {
		int xInc = xUnit / 10;
		int yInc = yUnit / 10;
		int xPoint1 = x + xInc;
		int yPoint1 = y + yInc;
		int xPoint2 = x + xUnit - xInc;
		int yPoint2 = yPoint1;
		int xPoint3 = xPoint1;
		int yPoint3 = y + yUnit / 2;
		int xPoint4 = xPoint2;
		int yPoint4 = yPoint3;
		int xPoint5 = xPoint3;
		int yPoint5 = y + yUnit - yInc;
		int xPoint6 = xPoint4;
		int yPoint6 = yPoint5;

		g.setColor(Color.white);
		switch (digit) {
			case '0':
				g.drawLine(xPoint1, yPoint1, xPoint2, yPoint2);
				g.drawLine(xPoint2, yPoint2, xPoint6, yPoint6);
				g.drawLine(xPoint6, yPoint6, xPoint5, yPoint5);
				g.drawLine(xPoint5, yPoint5, xPoint1, yPoint1);
				break;
			case '1':
				g.drawLine(xPoint1, yPoint1, xPoint5, yPoint5);
				break;
			case '2':
				g.drawLine(xPoint1, yPoint1, xPoint2, yPoint2);
				g.drawLine(xPoint2, yPoint2, xPoint4, yPoint4);
				g.drawLine(xPoint4, yPoint4, xPoint3, yPoint3);
				g.drawLine(xPoint3, yPoint3, xPoint5, yPoint5);
				g.drawLine(xPoint5, yPoint5, xPoint6, yPoint6);
				break;
			case '3':
				g.drawLine(xPoint1, yPoint1, xPoint2, yPoint2);
				g.drawLine(xPoint2, yPoint2, xPoint4, yPoint4);
				g.drawLine(xPoint4, yPoint4, xPoint3, yPoint3);
				g.drawLine(xPoint4, yPoint4, xPoint6, yPoint6);
				g.drawLine(xPoint6, yPoint6, xPoint5, yPoint5);
				break;
			case '4':
				g.drawLine(xPoint1, yPoint1, xPoint3, yPoint3);
				g.drawLine(xPoint3, yPoint3, xPoint4, yPoint4);
				g.drawLine(xPoint4, yPoint4, xPoint2, yPoint2);
				g.drawLine(xPoint4, yPoint4, xPoint6, yPoint6);
				break;
			case '5':
				g.drawLine(xPoint1, yPoint1, xPoint2, yPoint2);
				g.drawLine(xPoint1, yPoint1, xPoint3, yPoint3);
				g.drawLine(xPoint3, yPoint3, xPoint4, yPoint4);
				g.drawLine(xPoint4, yPoint4, xPoint6, yPoint6);
				g.drawLine(xPoint6, yPoint6, xPoint5, yPoint5);
				break;
			case '6':
				g.drawLine(xPoint1, yPoint1, xPoint3, yPoint3);
				g.drawLine(xPoint3, yPoint3, xPoint4, yPoint4);
				g.drawLine(xPoint4, yPoint4, xPoint6, yPoint6);
				g.drawLine(xPoint6, yPoint6, xPoint5, yPoint5);
				g.drawLine(xPoint5, yPoint5, xPoint3, yPoint3);
				break;
			case '7':
				g.drawLine(xPoint1, yPoint1, xPoint2, yPoint2);
				g.drawLine(xPoint2, yPoint2, xPoint6, yPoint6);
				break;
			case '8':
				g.drawLine(xPoint1, yPoint1, xPoint2, yPoint2);
				g.drawLine(xPoint2, yPoint2, xPoint6, yPoint6);
				g.drawLine(xPoint6, yPoint6, xPoint5, yPoint5);
				g.drawLine(xPoint5, yPoint5, xPoint1, yPoint1);
				g.drawLine(xPoint3, yPoint3, xPoint4, yPoint4);
				break;
			case '9':
				g.drawLine(xPoint1, yPoint1, xPoint2, yPoint2);
				g.drawLine(xPoint2, yPoint2, xPoint6, yPoint6);
				g.drawLine(xPoint1, yPoint1, xPoint3, yPoint3);
				g.drawLine(xPoint3, yPoint3, xPoint4, yPoint4);
				break;
		}
	}		
				  
	public void paintComponent(Graphics g) {
		int i, j, x, y;
  		int xUnit = deltaY / 9;
  		int yUnit = deltaY / 15;
		
		super.paintComponent(g);
		y = y0;
		for (i = 0; i < 3; i++) {
			x = x0;
			for (j = 0; j < 3; j++) {
				g.setColor(Color.white);
				g.drawRect(x, y, deltaX, deltaY);
				g.setColor(Color.black);
				g.fillRect(x, y, deltaX, deltaY);
				sevenSegmentDisplay(g, s[3 * i + j], x, y, deltaX, deltaY);
				x += deltaX;
			}
			y += deltaY;
		}		
	}

	public void setSolution(char[] solution) {
		s = new char[9];
		s = solution;
	}
}

class Puzzle8IFrame extends JFrame implements Runnable {
	boolean next;
	int iHeight, iWidth;
	JButton jButton1 = new JButton();
	JPanel jPanel = new JPanel();
	BorderLayout borderLayout = new BorderLayout();
	Puzzle8IPanel puzzle8IPanel;
	
	// step 3 - percentage size the window
	void setDesktopSize(JFrame frame, int wPerc, int hPerc) {
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		iWidth = screen.width * wPerc / 100;
		iHeight = screen.height * hPerc / 100;
		frame.setSize(iWidth, iHeight);
	}
	
	// step 4 - center the window
	void centerOnScreen(JFrame frame) {
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension window = frame.getSize();
		int iCenterX = screen.width / 2;
		int iCenterY = screen.height / 2;
		frame.setLocation(iCenterX - window.width / 2, iCenterY - window.height / 2);
	}
	
	public Puzzle8IFrame(char[] solution) {
		String title = "Puzzle8I by James Pate Williams, Jr. (c) 2001";
		next = false;
		jButton1.setToolTipText("Perform one iteration of algorithm");
		jButton1.setText("Next");
		jButton1.setVerticalAlignment(SwingConstants.BOTTOM);
		jButton1.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jButton1_actionPerformed(e);
			}
    		});
    		this.getContentPane().setLayout(borderLayout);
		setTitle(title);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent event) {
				System.exit(0);
			}
		});
		setDesktopSize(this, 100, 100);
		centerOnScreen(this);
		Container contentPane = getContentPane();
		contentPane.add(jPanel, BorderLayout.SOUTH);
		jPanel.add(jButton1, BorderLayout.CENTER);
		puzzle8IPanel = new Puzzle8IPanel(iWidth, iHeight, solution);
		contentPane.add(puzzle8IPanel, BorderLayout.CENTER);
		this.show();
		(new Thread(this)).run();
	}

	public boolean getNext() {
		return next;
	}

	public void setNext(boolean n) {
		next = n;
	}

	void jButton1_actionPerformed(ActionEvent e) {
		next = true;
	}
	
	public void run() {
		Thread.yield();
	}

	public void draw(char[] solution) {
		puzzle8IPanel.setSolution(solution);
		puzzle8IPanel.paintComponent(getGraphics());
	}
}

class PuzzleI {
	int flag, g, moves, nodesExpanded;
	int[][] board;
	Date date;
	Random random;
	public static final int Infinity = 2000000000;
	public static final int MaxMoves = 100;

	public PuzzleI() {
		boolean found;
		int digit, i, j, k;
		int[] placed = new int[9];
		
		date = new Date();
		random = new Random(date.getTime());
		for (i = 0; i < 9; i++)
			placed[i] = 0;
		board = new int[3][3];
		g = moves = nodesExpanded = 0;
		for (i = 0; i < 3; i++)
			for (j = 0; j < 3; j++)
				board[i][j] = 0;
		for (i = 0; i < 9; i++) {
			found = false;
			do {
				digit = random.nextInt(9);
				found = placed[digit] == 0;
				if (found)
					placed[digit] = 1;
			} while (!found);
			do {
				j = random.nextInt(3);
				k = random.nextInt(3);
				found = board[j][k] == 0;
				if (found)
					board[j][k] = digit;
			} while (!found);
		}
	}

	int getNodesExpanded() {
		return nodesExpanded;
	}

	int expand(int[][] square, int[][][] tempSquare) {
		int b = - 1, col = - 1, i, j, k, row = - 1;

		for (i = 0; i < 4; i++)
			for (j = 0; j < 3; j++)
				for (k = 0; k < 3; k++)
					tempSquare[i][j][k] = square[j][k];
		for (i = 0; i < 3; i++) {
			for (j = 0; j < 3; j++) {
				if (square[i][j] == 0) {
					row = i;
					col = j;
					break;
				}
			}
		}
		if (row == 0 && col == 0) {
			tempSquare[0][0][0] = tempSquare[0][0][1];
			tempSquare[0][0][1] = 0;
			tempSquare[1][0][0] = tempSquare[1][1][0];
			tempSquare[1][1][0] = 0;
			b = 2;
		}
		else if (row == 0 && col == 1) {
			tempSquare[0][0][1] = tempSquare[0][0][0];
			tempSquare[0][0][0] = 0;
			tempSquare[1][0][1] = tempSquare[1][1][1];
			tempSquare[1][1][1] = 0;
			tempSquare[2][0][1] = tempSquare[2][0][2];
			tempSquare[2][0][2] = 0;
			b = 3;
		}
		else if (row == 0 && col == 2) {
			tempSquare[0][0][2] = tempSquare[0][0][1];
			tempSquare[0][0][1] = 0;
			tempSquare[1][0][2] = tempSquare[1][1][2];
			tempSquare[1][1][2] = 0;
			b = 2;
		}
		else if (row == 1 && col == 0) {
			tempSquare[0][1][0] = tempSquare[0][0][0];
			tempSquare[0][0][0] = 0;
			tempSquare[1][1][0] = tempSquare[1][1][1];
			tempSquare[1][1][1] = 0;
			tempSquare[2][1][0] = tempSquare[2][2][0];
			tempSquare[2][2][0] = 0;
			b = 3;
		}
		else if (row == 1 && col == 1) {
			tempSquare[0][1][1] = tempSquare[0][1][0];
			tempSquare[0][1][0] = 0;
			tempSquare[1][1][1] = tempSquare[1][0][1];
			tempSquare[1][0][1] = 0;
			tempSquare[2][1][1] = tempSquare[2][1][2];
			tempSquare[2][1][2] = 0;
			tempSquare[3][1][1] = tempSquare[3][2][1];
			tempSquare[3][2][1] = 0;
			b = 4;
		}
		else if (row == 1 && col == 2) {
			tempSquare[0][1][2] = tempSquare[0][0][2];
			tempSquare[0][0][2] = 0;
			tempSquare[1][1][2] = tempSquare[1][1][1];
			tempSquare[1][1][1] = 0;
			tempSquare[2][1][2] = tempSquare[2][2][2];
			tempSquare[2][2][2] = 0;
			b = 3;
		}
		else if (row == 2 && col == 0) {
			tempSquare[0][2][0] = tempSquare[0][1][0];
			tempSquare[0][1][0] = 0;
			tempSquare[1][2][0] = tempSquare[1][2][1];
			tempSquare[1][2][1] = 0;
			b = 2;
		}
		else if (row == 2 && col == 1) {
			tempSquare[0][2][1] = tempSquare[0][2][0];
			tempSquare[0][2][0] = 0;
			tempSquare[1][2][1] = tempSquare[1][1][1];
			tempSquare[1][1][1] = 0;
			tempSquare[2][2][1] = tempSquare[2][2][2];
			tempSquare[2][2][2] = 0;
			b = 3;
		}
		else if (row == 2 && col == 2) {
			tempSquare[0][2][2] = tempSquare[0][2][1];
			tempSquare[0][2][1] = 0;
			tempSquare[1][2][2] = tempSquare[1][1][2];
			tempSquare[1][1][2] = 0;
			b = 2;
		}
		return b;
	}

	int heuristic(int[][] square) {
		return ManhattenDistance(square);
	}
	
	int DFSContour(char[][] solution, int fLimit, int m, int[][] board) {
		boolean equal, skip;
		char[] tempSolution = new char[9];	
		int b, count, fCost, i, j, k, l, n, newF, nextF = Infinity;
		int[][][] tempSquare = new int[4][3][3];

		fCost = g + heuristic(board);
		for (i = k = 0; i < 3; i++)
			for (j = 0; j < 3; j++)
				solution[m][k++] = (char) (board[i][j] + '0');
		m++;
		if (m == MaxMoves)
			return Infinity;
		if (fCost > fLimit) {
			flag = 0;
			return fCost;
		}
		if (board[0][0] == 1 && board[0][1] == 2 && board[0][2] == 3 &&
			board[1][0] == 8 && board[1][1] == 0 && board[1][2] == 4 &&
			board[2][0] == 7 && board[2][1] == 6 && board[2][2] == 5) {
			flag = 1;
			moves = m;
			return fCost;
		}
		b = expand(board, tempSquare);
		nodesExpanded += b;
		for (i = 0; i < b; i++) {
			skip = false;
			for (j = m - 1; !skip && j < m; j++) {
				for (k = l = 0; k < 3; k++)
					for (n = 0; n < 3; n++)
						tempSolution[l++] = (char) (tempSquare[i][k][n] + '0');
				equal = tempSolution[0] == solution[j][0];
				for (k = 1; equal && k < 9; k++)
					equal = tempSolution[k] == solution[j][k];
				if (equal)
					skip = true;
			}
			if (!skip) {
				newF = DFSContour(solution, fCost, m, tempSquare[i]);
				if (flag == 1)
					return newF;
				nextF = newF < nextF ? newF : nextF;
			}
		}
		g++;
		return nextF;
	}

	int outOfPlace(int[][] square) {
		int i, j, oop = 0;
		int[][] goal = new int[3][3];
		
		goal[0][0] = 1;
		goal[0][1] = 2;
		goal[0][2] = 3;
		goal[1][0] = 8;
		goal[1][1] = 0;
		goal[1][2] = 4;
		goal[2][0] = 7;
		goal[2][1] = 6;
		goal[2][2] = 5;
		for (i = 0; i < 3; i++)
			for (j = 0; j < 3; j++)
				if (square[i][j] != goal[i][j])
					oop++;
		return oop;
	}

	int ManhattenDistance(int[][] square) {
		// city block or Manhatten distance heuristic
		int md = 0;

		if (square[0][0] == 1)
			md += 0;
		else if (square[0][0] == 2)
			md += 1;
		else if (square[0][0] == 3)
			md += 2;
		else if (square[0][0] == 4)
			md += 3;
		else if (square[0][0] == 5)
			md += 4;
		else if (square[0][0] == 6)
			md += 3;
		else if (square[0][0] == 7)
			md += 2;
		else if (square[0][0] == 8)
			md += 1;
		if (square[0][1] == 1)
			md += 1;
		else if (square[0][1] == 2)
			md += 0;
		else if (square[0][1] == 3)
			md += 1;
		else if (square[0][1] == 4)
			md += 2;
		else if (square[0][1] == 5)
			md += 3;
		else if (square[0][1] == 6)
			md += 2;
		else if (square[0][1] == 7)
			md += 3;
		else if (square[0][1] == 8)
			md += 2;
		if (square[0][2] == 1)
			md += 2;
		else if (square[0][2] == 2)
			md += 1;
		else if (square[0][2] == 3)
			md += 0;
		else if (square[0][2] == 4)
			md += 1;
		else if (square[0][2] == 5)
			md += 2;
		else if (square[0][2] == 6)
			md += 3;
		else if (square[0][2] == 7)
			md += 4;
		else if (square[0][2] == 8)
			md += 3;
		if (square[1][0] == 1)
			md += 1;
		else if (square[1][0] == 2)
			md += 2;
		else if (square[1][0] == 3)
			md += 3;
		else if (square[1][0] == 4)
			md += 2;
		else if (square[1][0] == 5)
			md += 3;
		else if (square[1][0] == 6)
			md += 2;
		else if (square[1][0] == 7)
			md += 1;
		else if (square[1][0] == 8)
			md += 0;
		if (square[1][1] == 1)
			md += 2;
		else if (square[1][1] == 2)
			md += 1;
		else if (square[1][1] == 3)
			md += 2;
		else if (square[1][1] == 4)
			md += 1;
		else if (square[1][1] == 5)
			md += 2;
		else if (square[1][1] == 6)
			md += 1;
		else if (square[1][1] == 7)
			md += 2;
		else if (square[1][1] == 8)
			md += 1;
		if (square[1][2] == 1)
			md += 3;
		else if (square[1][2] == 2)
			md += 2;
		else if (square[1][2] == 3)
			md += 1;
		else if (square[1][2] == 4)
			md += 0;
		else if (square[1][2] == 5)
			md += 1;
		else if (square[1][2] == 6)
			md += 2;
		else if (square[1][2] == 7)
			md += 3;
		else if (square[1][2] == 8)
			md += 2;
		if (square[2][0] == 1)
			md += 2;
		else if (square[2][0] == 2)
			md += 3;
		else if (square[2][0] == 3)
			md += 4;
		else if (square[2][0] == 4)
			md += 3;
		else if (square[2][0] == 5)
			md += 2;
		else if (square[2][0] == 6)
			md += 1;
		else if (square[2][0] == 7)
			md += 0;
		else if (square[2][0] == 8)
			md += 1;
		if (square[2][1] == 1)
			md += 3;
		else if (square[2][1] == 2)
			md += 2;
		else if (square[2][1] == 3)
			md += 3;
		else if (square[2][1] == 4)
			md += 2;
		else if (square[2][1] == 5)
			md += 1;
		else if (square[2][1] == 6)
			md += 0;
		else if (square[2][1] == 7)
			md += 1;
		else if (square[2][1] == 8)
			md += 2;
		if (square[2][2] == 1)
			md += 4;
		else if (square[2][2] == 2)
			md += 3;
		else if (square[2][2] == 3)
			md += 2;
		else if (square[2][2] == 4)
			md += 1;
		else if (square[2][2] == 5)
			md += 0;
		else if (square[2][2] == 6)
			md += 1;
		else if (square[2][2] == 7)
			md += 2;
		else if (square[2][2] == 8)
			md += 3;
		return md;
	}

	boolean solve(char[][] solution) {
		boolean found;
		int fCost, i, j, k, m = 0;
		
		fCost = DFSContour(solution, Infinity, 0, board);
		if (flag == 1)
			return true;
		else if (fCost == Infinity)
			return false;
		return false;
	}

	int getMoves() {
		return moves;
	}
}

class Puzzle8I implements Runnable {
	char[][] solution = null;
	int moves;
	PuzzleI puzzleI = null;

	public Puzzle8I () {
		solution = new char[PuzzleI.MaxMoves][9];
		do
			puzzleI = new PuzzleI();
		while (!puzzleI.solve(solution));
	}

	public void run() {
		Puzzle8IFrame puzzle8IFrame = new Puzzle8IFrame(solution[0]);
		
		moves = puzzleI.getMoves() - 1;
		System.out.println("moves = " + moves);
		for (int i = 1; i < moves + 1; i++) {
			while (!puzzle8IFrame.getNext())
				Thread.yield();
			puzzle8IFrame.setNext(false);
			puzzle8IFrame.draw(solution[i]);
		}
	}

	static void main(String[] arg) {
		(new Puzzle8I()).run();
	}
}
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
Goback (۰۵-۲۱-۱۳۸۹), green_Dream (۰۶-۶-۱۳۸۹), nasersalehiazar (۰۸-۲۴-۱۳۸۹), nokhbeh (۰۱-۲۵-۱۳۹۳)
قديمي ۰۶-۶-۱۳۸۹, ۰۳:۱۰ بعد از ظهر   #17 (لینک دائم)
Active users
 
آواتار green_Dream
 
تاريخ عضويت: بهمن ۱۳۸۸
پست ها: 16
تشكرها: 228
35 تشكر در 4 پست
My Mood: Khejalati
پيش فرض

با سلام و احترام

ابتدا از مدير كل سايت بسيار ممنون و سپاسگزارم كه لطف مي كنند و به ديدگاهها و تاپيك هاي دوستان توجه مي كنند !!!!!!
ميشه خواهش كنم اگر درباره معماي هشت پازل به روش greedy search (جستجوي حريصانه) نيز ،سورس كدي داشتيد در فروم قرار دهيد

با تشكر فراوان
green_Dream آفلاين است   پاسخ با نقل قول
قديمي ۰۶-۷-۱۳۸۹, ۱۰:۴۳ قبل از ظهر   #18 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink

نقل قول:
نوشته اصلي بوسيله green_dream نمايش پست
با سلام و احترام

ابتدا از مدير كل سايت بسيار ممنون و سپاسگزارم كه لطف مي كنند و به ديدگاهها و تاپيك هاي دوستان توجه مي كنند !!!!!!
ميشه خواهش كنم اگر درباره معماي هشت پازل به روش greedy search (جستجوي حريصانه) نيز ،سورس كدي داشتيد در فروم قرار دهيد

با تشكر فراوان
متأسفانه با اين روش چيزي پيدا نکردم!

البته هميشه مدير نبايد پاسخگو باشهانجمن راه انداختيم تا همه تو حل مشکلات همديگه کمک کنن نه اينکه فقط درخواست کنن البته شما فعاليت داريد ولي کلاً از بقيه دوستان هم ميخوام که همون اندازه که از اينجا استفاده ميکنن، همون اندازه هم خرج کنن!
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده است:
marc_afshin (۰۱-۲۱-۱۳۹۲)
قديمي ۰۷-۲۳-۱۳۸۹, ۱۱:۴۱ بعد از ظهر   #19 (لینک دائم)
عضو جدید
 
آواتار samira777
 
تاريخ عضويت: مهر ۱۳۸۹
پست ها: 3
تشكرها: 0
1 تشكر در 1 پست
پيش فرض

سلام
معماي 8 رو با الگوريتم اجتماع ذرات pso هم ميشه حل كرد؟
اگه آره، كدي توو متلب يا ++c مي خواستم.
ممنون
samira777 آفلاين است   پاسخ با نقل قول
قديمي ۰۸-۲-۱۳۸۹, ۰۳:۴۱ بعد از ظهر   #20 (لینک دائم)
عضو جدید
 
آواتار batking
 
تاريخ عضويت: آبان ۱۳۸۹
پست ها: 2
تشكرها: 0
0 تشكر در 0 پست
My Mood: Shad
پيش فرض

سلام دوستان

استاد ما گفته بود که حالتهای اولیه برای این مساله !9 حالت هستش.
که نصف این حالتها به جواب میرسه و نصف دیگشون به جواب نمیرسن.

کسی نظری داره؟
batking آفلاين است   پاسخ با نقل قول
پاسخ

Tags
8-puzzle



كاربران در حال ديدن تاپيک: 2 (0 عضو و 2 مهمان)
 

قوانين ارسال
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is فعال
شکلکها فعال است
كد [IMG] فعال است
كدهاي HTML غير فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال




زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۱:۴۴ بعد از ظهر ميباشد.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

Teach and Learn at Hexib | Sponsored by www.Syavash.com and Product In Review

استفاده از مطالب انجمن در سایر سایت ها، تنها با ذکر انجمن هوش مصنوعي به عنوان منبع و لینک مستقیم به خود مطلب مجاز است

Inactive Reminders By Icora Web Design