📄 heuristischgreedysearch.java
字号:
/*
* Created on 9-okt-2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package logic;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeSet;
/**
* @author gebruiker
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class HeuristischGreedySearch extends ProbleemOplosser {
private TreeSet open;
private ArrayList closed;
//private LinkedList closed = new LinkedList();
public SpeelBordToestand getOplossing(SpeelBordToestand start, SpeelBordToestand doel)
{
//TODO
this.clearLists();
open = new TreeSet(new ManhattanComparator(doel));
closed = new ArrayList();
solutionFinderStarted();
open.add(start.clone());
while(open.size() > 0)//zolang de set knopen bevat
{
SpeelBordToestand teExpanderen = (SpeelBordToestand)open.first();
//System.out.println("uitkomst heuristische methode: " + teExpanderen.getManhattanAfstandTot(doel));
Iterator iterator = teExpanderen.getSuccessors().iterator();
while(iterator.hasNext())
{
intNumberOfNodesExpanded++;
Object obj = iterator.next();
if(doel.equals(obj))
{
createSolutionList((SpeelBordToestand)obj);
return getFirst();
}
if(!closed.contains(obj) && !open.contains(obj))//als deze toestand nog niet voorkomt bij de closed
{
open.add(obj);//voeg elke successor toe aan de SET. => automatisch geordend.
}
}
closed.add(teExpanderen);
open.remove(teExpanderen);
}
return doel;
}
protected void clearLists()
{
super.clearLists();
if(open != null)
open.clear();
if(closed != null)
closed.clear();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -