PaGMO  1.1.5
pan.cpp
1 /*****************************************************************************
2  * Copyright (C) 2004-2015 The PaGMO development team, *
3  * Advanced Concepts Team (ACT), European Space Agency (ESA) *
4  * *
5  * https://github.com/esa/pagmo *
6  * *
7  * act@esa.int *
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  * This program is distributed in the hope that it will be useful, *
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
17  * GNU General Public License for more details. *
18  * *
19  * You should have received a copy of the GNU General Public License *
20  * along with this program; if not, write to the *
21  * Free Software Foundation, Inc., *
22  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
23  *****************************************************************************/
24 
25 #include <string>
26 
27 #include "base.h"
28 #include "pan.h"
29 
30 namespace pagmo { namespace topology {
31 
33 pan::pan():base() {}
34 
36 {
37  return base_ptr(new pan(*this));
38 }
39 
41 {
42  switch(n)
43  {
44  case 0:
45  break;
46  case 1:
47  // Add connection from the newly added node to the zeroth.
48  add_edge(1,0);
49  break;
50  case 2:
51  add_edge(1,2);
52  add_edge(2,1);
53  break;
54  case 3:
55  add_edge(2,3);
56  add_edge(3,2);
57  add_edge(1,3);
58  add_edge(3,1);
59  break;
60  default:
61  remove_edge(n - 1,1);
62  remove_edge(1,n - 1);
63  add_edge(n - 1,n);
64  add_edge(n,n - 1);
65  add_edge(1,n);
66  add_edge(n,1);
67  }
68 }
69 
70 std::string pan::get_name() const
71 {
72  return "Pan graph";
73 }
74 
75 }} //namespaces
76 
77 BOOST_CLASS_EXPORT_IMPLEMENT(pagmo::topology::pan)
Root PaGMO namespace.
boost::shared_ptr< base > base_ptr
Alias for shared pointer to base topology.
Definition: topology/base.h:47
std::string get_name() const
Get name of the topology.
Definition: pan.cpp:70
pan()
Constructor.
Definition: pan.cpp:33
Base topology class.
Definition: topology/base.h:75
void remove_edge(const vertices_size_type &, const vertices_size_type &)
Remove an edge.
base_ptr clone() const
Clone method.
Definition: pan.cpp:35
graph_type::vertices_size_type vertices_size_type
Vertices size type.
Pan graph topology.
Definition: pan.h:47
void add_edge(const vertices_size_type &, const vertices_size_type &)
Add an edge.
void connect(const vertices_size_type &)
Establish connections between islands during a push_back() operation.
Definition: pan.cpp:40