亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sa_graph.cpp

?? 用經(jīng)典的局部搜索算法模擬退火算法求解一個(gè)圖的最大可平面子圖。
?? CPP
字號(hào):
// The maximum planar subgraph project 2002 
// University of Tampere, Finland
// Department of Computer and Information Sciences
// Corresponding author: Timo Poranen, tp@cs.uta.fi

//SA_GRAPH.CPP
// - constructors
// - destructors
// - initialization 

#include <LEDA/ugraph.h>
#include <LEDA/set.h>
#include <LEDA/list.h>
#include <LEDA/node_list.h>
#include <LEDA/graph_misc.h> 
#include <LEDA/graph_alg.h>

#include <LEDA/array.h>

#include <iostream.h>
#include <stdlib.h>
#include "sa_graph.h"


void sa_graph::setTraceFileName(char * file)
{
  //cout<<"tracefile set"<<endl;
  trace=true;
  strcpy(traceFileName,file);
}

void sa_graph::setInitialSolution(int i)
{
  initialSolution=i;
  largestPlanarSubgraph=i;
}

sa_graph::sa_graph(UGRAPH<int,int> *Gr)
{
  
  G = Gr;
  vertices=G->number_of_nodes();
  edges=G->number_of_edges();

  largestPlanarSubgraph=0;
  
  edgePartitionArray = new set<edge> * [vertices];
  
  for (int i=0;i<2;i++)
    {
      edgePartitionArray[i]= new set<edge>;
    }

  bestResult=-1;
  trace=false;
}

void sa_graph::delete_ini_stuff()
{

  //delete [] tmpSarmat;
  
  for (int i=0;i<2;i++)
    {
      delete edgePartitionArray[i];
    }
  delete [] edgePartitionArray;
}


sa_graph::~sa_graph()
{
  //  delete [] conTable;
  //cout<<"in the destructor!"<<endl;
} 

//PLANARITY CHECK FOR edge sets and edge arrays

//checks that is array (0..partitionCounter-1) planar
//we hide all other edges and then test planarity
//finally we restore all edges!
bool sa_graph::isArrayPlanar(int s)
{
  //cout<<"in the planarity test"<<endl;
  edge e;   
  forall_edges(e,*G)
    {
      G->hide_edge(e);
    }
  
  for (int i=0;i<arraySizes[s];i++)
    {
      e = A[s]->get(i);
      G->restore_edge(e);
    }
  
  bool planarFlag=false;
  
  if (Is_Planar(*G))    
    {
      planarFlag=true;	  
    }
  
  G->restore_all_edges();  

  //  cout<<"planarity test end"<<endl;  
  return planarFlag;
}


int sa_graph::getVertices()
{
  return vertices;
}
int sa_graph::getEdges()
{
  return edges;
}

bool sa_graph::readSAParameters()
{
  
  cout<<"reading parameter file!"<<endl;
  ifstream parameterFile("sa_parameters.txt");

  if (!parameterFile)
    {
      cout<<"Can't open parameterfile sa_parameters.txt"<<endl;      
      exit(0);
    }

  char txt[20];
  double value;
  parameterFile >> txt;
  parameterFile >> value;
  t0=value;
  parameterFile >> txt;
  parameterFile >> value;
  t1=value;
  parameterFile >> txt;
  parameterFile >> value;
  alpha=value;
  int loop;
  parameterFile >> txt;
  parameterFile >> loop;
  inner_loop=loop;  
  return true;
}

int sa_graph::getCurrentSolution()
{
  return largestPlanarSubgraph;
}

//places randomly only one edge to the first planar set
//We call this initialization method "empty", since
//it starts from an empty set and place one edge to the first set.
//Now we can use sa-algorithms main loop 
void sa_graph::initialize_empty()
{
  cout<<"initialization";
  partitionCounter=2;
  edge e;
  
  //first we insert all edges to first set!
  forall_edges(e,*G)
    {
      edgePartitionArray[1]->insert(e);
      G->assign(e,1); //assign partition number!       
    }
  
  e=edgePartitionArray[1]->choose();

  edgePartitionArray[0]->insert(e);
  if (isSetPlanar(0)==true)
    {
      edgePartitionArray[1]->del(e);	      
      G->assign(e,0); //assign part. number!  
      cout<<"one edge inserted to set 1"<<endl;
      edgesInPartitions[0]++;
    }
  else
    {
      cout<<"an error, since one edge induces always planar graph!"<<endl;
      exit(0);    
    }
  
  setInitialSolution(edgesInPartitions[0]);  
}



void sa_graph::initialize_sa()
{
  cout<<"Simulated annealing started!"<<endl;
  if (!readSAParameters())
    {
      cout<<"can't read parameters from sa_parameters.txt"<<endl;
      exit(0);
    }

  if  (t0<0 || t0>15)
    {
      cout<<"error 't0' in sa's paremeters"<<endl;
      exit(0);
    }

  if  (t1<0 || t1>15)
    {
      cout<<"error 't1' in sa's paremeters"<<endl;
      exit(0);
    }

  if  (alpha<0 || alpha>15)
    {
      cout<<"error 'alpha' in sa's paremeters"<<endl;
      exit(0);
    }

  if  (inner_loop<0 || inner_loop>7)
    {
      cout<<"error 'inner_loop' in sa's paremeters"<<endl;
      exit(0);
    }

  //set correct value for global variable inner_loop
  if (inner_loop==0)
    inner_loop=vertices;
  else if (inner_loop==1)
    inner_loop=2*vertices;
  else if (inner_loop==2)
    inner_loop=vertices*vertices;
  else if (inner_loop==3)
    inner_loop=vertices*vertices/2;
  else if (inner_loop==4)
    inner_loop=edges/2;
  else if (inner_loop==5)
    inner_loop=edges;
  else if (inner_loop==6)
    inner_loop=2*edges;

  else
    {
      cout<<"error 'inner_loop' in sa's paremeters"<<endl;
      exit(0);
    }

  cout<<"initialization done"<<endl;
}


//checks that is set s (0..partitionCounter-1) planar
bool sa_graph::isSetPlanar(int s)
{
  edge e;

  set<edge> hidden;
  forall_edges(e,*G) {
    if (edgePartitionArray[s]->member(e))
      {
        //do nothing
      }
    else
      {
        G->hide_edge(e);
        hidden.insert(e);
      }
  }

  bool planarFlag=false;
  if (Is_Planar(*G))
    planarFlag=true;

  forall(e,hidden)
    {
      G->restore_edge(e);
    }
  return planarFlag;
}







?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本伊人精品一区二区三区观看方式 | 国产精品毛片久久久久久久| 另类小说一区二区三区| 3d成人h动漫网站入口| 美日韩一级片在线观看| 日韩视频123| 国产一区二区在线观看免费| 欧美国产精品一区| 在线日韩国产精品| 蜜桃精品视频在线| 亚洲国产精品av| 在线亚洲人成电影网站色www| 亚洲精品免费在线观看| 69久久夜色精品国产69蝌蚪网| 麻豆精品久久久| 26uuu成人网一区二区三区| 成人黄色网址在线观看| 亚洲裸体xxx| 欧美日韩电影在线| 国产精品一区二区91| 亚洲精品午夜久久久| 91麻豆精品国产91久久久资源速度 | 欧美私人免费视频| 亚洲国产精品久久久久婷婷884 | 中文字幕av一区二区三区高| 91视频你懂的| 全部av―极品视觉盛宴亚洲| 国产亚洲成av人在线观看导航| 99精品在线免费| 老司机免费视频一区二区| 国产精品久久久久久久久免费樱桃| 欧美视频在线一区二区三区| 国产一区美女在线| 亚洲综合在线免费观看| 日韩欧美久久久| 色婷婷激情综合| 国产一区在线视频| 舔着乳尖日韩一区| 国产精品网站在线| 日韩欧美一区在线观看| 欧洲一区在线观看| 夫妻av一区二区| 麻豆成人久久精品二区三区红 | 天天av天天翘天天综合网| 久久综合九色综合欧美就去吻| 色老综合老女人久久久| 国产成都精品91一区二区三| 亚洲国产综合在线| 国产精品大尺度| 久久久噜噜噜久久人人看| 3751色影院一区二区三区| 91精品福利在线| jlzzjlzz亚洲女人18| 国产自产高清不卡| 奇米影视7777精品一区二区| 日韩毛片一二三区| 中文乱码免费一区二区| 日韩1区2区3区| 亚洲综合在线视频| 悠悠色在线精品| 国产精品久久久久四虎| 久久久久久免费毛片精品| 日韩亚洲欧美中文三级| 欧美区一区二区三区| 91福利社在线观看| 91视视频在线观看入口直接观看www | 成人app网站| 国产酒店精品激情| 久久av中文字幕片| 久久精品国产亚洲高清剧情介绍| 天天影视网天天综合色在线播放| 亚洲男人的天堂在线观看| 亚洲色图色小说| 中文字幕一区二区三区蜜月| 久久久国产精华| 久久久亚洲精品一区二区三区| 91麻豆精品国产91久久久资源速度| 欧美亚洲一区二区在线| 一本色道久久综合亚洲aⅴ蜜桃 | 蜜桃视频第一区免费观看| 亚洲午夜三级在线| 亚洲午夜一二三区视频| 视频一区欧美日韩| 美女爽到高潮91| 九一九一国产精品| 国产精品综合视频| 成人一级片网址| 色综合久久久久久久久| 欧美日韩精品一区视频| 欧美一区二区人人喊爽| 欧美mv日韩mv亚洲| 欧美国产精品一区二区三区| 国产精品视频观看| 亚洲精品国产精华液| 亚洲一区二区影院| 久久精品国产网站| 成人免费视频视频| 91豆麻精品91久久久久久| 91精品国产综合久久精品app| 日韩欧美国产成人一区二区| 欧美电影免费观看高清完整版在| 久久久久久久综合狠狠综合| 国产精品久久久久久久久图文区 | 色婷婷狠狠综合| 欧美欧美欧美欧美首页| 精品成人一区二区三区| 1024成人网| 六月丁香综合在线视频| 成人一区在线看| 51精品久久久久久久蜜臀| 久久久一区二区三区捆绑**| 亚洲欧美日韩人成在线播放| 午夜精品一区二区三区免费视频 | 欧美一级日韩免费不卡| 国产色一区二区| 亚洲成人自拍一区| 国产大片一区二区| 欧美日韩国产天堂| 久久久www成人免费毛片麻豆 | 国产日韩欧美a| 亚洲午夜一二三区视频| 国产精品一卡二卡| 欧美三级电影在线看| 久久久影院官网| 亚洲成人av资源| av不卡免费在线观看| 日韩一区二区三区电影| 亚洲伦理在线免费看| 精品亚洲porn| 欧美性大战久久| 国产精品国产三级国产普通话蜜臀| 五月激情综合婷婷| a4yy欧美一区二区三区| 精品久久久久久最新网址| 亚洲一区二区三区在线看| 国产高清在线观看免费不卡| 欧美久久久影院| 欧美在线观看一区二区| 亚洲免费资源在线播放| 99久久精品费精品国产一区二区| 国产一区二区精品久久91| 欧美精品第1页| 亚洲欧美韩国综合色| 福利一区二区在线观看| 欧美本精品男人aⅴ天堂| 偷拍亚洲欧洲综合| 91美女片黄在线观看| 欧美激情在线一区二区| 毛片一区二区三区| 9191精品国产综合久久久久久| 自拍av一区二区三区| 成人a免费在线看| 国产喂奶挤奶一区二区三区| 久久97超碰色| 欧美一区二区久久久| 亚洲444eee在线观看| 色天天综合色天天久久| 国产精品麻豆视频| 国产成人午夜电影网| 久久久久久久精| 激情国产一区二区| 精品电影一区二区三区| 麻豆91在线看| 欧美精品一区二区蜜臀亚洲| 精品一区二区三区在线观看国产| 欧美一卡二卡三卡四卡| 青娱乐精品视频在线| 日韩精品五月天| 久久这里只有精品6| 成人av在线资源| 国产精品久久久久天堂| 99麻豆久久久国产精品免费优播| 亚洲国产精品成人综合| av在线播放成人| 国产精品久久久久久久岛一牛影视 | 99久久国产综合色|国产精品| 国产精品美女久久福利网站| 99re成人在线| 一区二区在线电影| 欧美日韩国产首页在线观看| 日韩国产精品91| 精品欧美一区二区久久| 国产成人亚洲综合a∨婷婷| 欧美国产精品一区| 在线一区二区三区四区| 天天综合日日夜夜精品| 精品美女在线观看| 国产99一区视频免费| 国产精品久久久久影院亚瑟| 色综合天天性综合| 日韩专区中文字幕一区二区| 欧美电影在线免费观看| 欧美一区二区在线播放| 99久久精品情趣| 暴力调教一区二区三区| av高清久久久| 日韩精品一二三四| 国产色91在线| 欧美熟乱第一页| 国产激情一区二区三区桃花岛亚洲|