게임 인공지능                                                                   GameAI                 그래프 Class 구현             ...
2                 그래프 Class 구현   자료구조         인접 행렬                                노드(Node)     인접 리스트                    ...
3                 그래프 Class 구현   자료구조         인접 행렬                                노드(Node)     인접 리스트                    ...
4                 class GraphNode                 {                 private:                     //every node has an index...
5                 template < class extra_info = void*>                 class NavGraphNode : public GraphNode              ...
6        class GraphEdge        {        protected:           int m_iFrom;           int m_iTo;           double m_dCost; ...
7          template <class node_type, class edge_type>          class SparseGraph          {          public:             ...
8          public:            SparseGraph(bool digraph): m_iNextNodeIndex(0), m_bDigraph(digraph){}                 const ...
9                 int NumNodes()const;                 int NumActiveNodes()const;                 int NumEdges()const;    ...
Upcoming SlideShare
Loading in...5
×

그래프 Class 구현

621

Published on

http://wawworld.me

changhoonpark@gmail.com

Published in: Education, Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
621
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "그래프 Class 구현"

  1. 1. 게임 인공지능 GameAI 그래프 Class 구현 By Changhoon Park http://changhoonpark.wordpress.com Last Update : 2011. 08. 2811년 8월 30일 화요일
  2. 2. 2 그래프 Class 구현 자료구조 인접 행렬 노드(Node) 인접 리스트 에지(Edge) 그래프(Graph) By Changhoon Park http://changhoonpark.wordpress.com11년 8월 30일 화요일
  3. 3. 3 그래프 Class 구현 자료구조 인접 행렬 노드(Node) 인접 리스트 에지(Edge) 그래프(Graph) By Changhoon Park http://changhoonpark.wordpress.com11년 8월 30일 화요일
  4. 4. 4 class GraphNode { private: //every node has an index. A valid index is >= 0 int m_iIndex; public: GraphNode(): m_iIndex(invalid_node_index) {} GraphNode(int idx): m_iIndex(idx) {} virtual ~GraphNode() {} int Index() const; void SetIndex(int NewIndex); }; 그래프 Class 구현 자료구조 노드(Node) 에지(Edge) 그래프(Graph) By Changhoon Park http://changhoonpark.wordpress.com11년 8월 30일 화요일
  5. 5. 5 template < class extra_info = void*> class NavGraphNode : public GraphNode { protected: //the nodes position Vector2D m_vPosition; extra_info m_ExtraInfo; public: /*INTERFACE OMITTED */ }; 그래프 Class 구현 자료구조 노드(Node) 에지(Edge) 그래프(Graph) By Changhoon Park http://changhoonpark.wordpress.com11년 8월 30일 화요일
  6. 6. 6 class GraphEdge { protected: int m_iFrom; int m_iTo; double m_dCost; public: GraphEdge(int from, int to, double cost): m_dCost(cost), m_iFrom(from), m_iTo(to) {} GraphEdge(int from, int to):m_dCost(1.0), m_iFrom(from), m_iTo(to) {} GraphEdge():m_dCost(1.0), m_iFrom(invalid_node_index), m_iTo(invalid_node_index) {} virtual ~GraphEdge(){} int From() const; void SetFrom(int NewIndex); int To() const; void SetTo(int NewIndex); double Cost() const; void SetCost(double NewCost); }; 그래프 Class 구현 자료구조 노드(Node) 에지(Edge) 그래프(Graph) By Changhoon Park http://changhoonpark.wordpress.com11년 8월 30일 화요일
  7. 7. 7 template <class node_type, class edge_type> class SparseGraph { public: typedef edge_type EdgeType; typedef node_type NodeType; typedef std::vector<node_type> NodeVector; typedef std::list<edge_type> EdgeList; typedef std::vector<EdgeList> EdgeListVector; private: NodeVector m_Nodes; EdgeListVector m_Edges; bool m_bDigraph; int m_iNextNodeIndex; 그래프 Class 구현 자료구조 노드(Node) 에지(Edge) 그래프(Graph) By Changhoon Park http://changhoonpark.wordpress.com11년 8월 30일 화요일
  8. 8. 8 public: SparseGraph(bool digraph): m_iNextNodeIndex(0), m_bDigraph(digraph){} const NodeType& GetNode(int idx)const; NodeType& GetNode(int idx); const EdgeType& GetEdge(int from, int to)const; EdgeType& GetEdge(int from, int to); int GetNextFreeNodeIndex()const; int AddNode(NodeType node); void RemoveNode(int node); void AddEdge(EdgeType edge); void RemoveEdge(int from, int to); 그래프 Class 구현 자료구조 노드(Node) 에지(Edge) 그래프(Graph) By Changhoon Park http://changhoonpark.wordpress.com11년 8월 30일 화요일
  9. 9. 9 int NumNodes()const; int NumActiveNodes()const; int NumEdges()const; bool isDigraph()const; bool isEmpty()const; bool isPresent(int nd)const; bool Save(const char* FileName)const; bool Save(std::ofstream& stream)const; bool Load(const char* FileName); bool Load(std::ifstream& stream); void Clear(); class ConstEdgeIterator; class EdgeIterator; class NodeIterator; class ConstNodeIterator; }; 그래프 Class 구현 자료구조 노드(Node) 에지(Edge) 그래프(Graph) By Changhoon Park http://changhoonpark.wordpress.com11년 8월 30일 화요일

×