Skip to content

Commit 2c8da6c

Browse files
committed
First Commit. Implement find matchings between pattern graphs and data graphs
1 parent d3d734a commit 2c8da6c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+7924
-0
lines changed

VFLibTest.sln

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Express 2013 for Windows Desktop
4+
VisualStudioVersion = 12.0.31101.0
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VFLibTest", "VFLibTest\VFLibTest.vcxproj", "{FFB53DB9-F2DA-4B52-8792-C34674B14B75}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Win32 = Debug|Win32
11+
Release|Win32 = Release|Win32
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{FFB53DB9-F2DA-4B52-8792-C34674B14B75}.Debug|Win32.ActiveCfg = Debug|Win32
15+
{FFB53DB9-F2DA-4B52-8792-C34674B14B75}.Debug|Win32.Build.0 = Debug|Win32
16+
{FFB53DB9-F2DA-4B52-8792-C34674B14B75}.Release|Win32.ActiveCfg = Release|Win32
17+
{FFB53DB9-F2DA-4B52-8792-C34674B14B75}.Release|Win32.Build.0 = Release|Win32
18+
EndGlobalSection
19+
GlobalSection(SolutionProperties) = preSolution
20+
HideSolutionNode = FALSE
21+
EndGlobalSection
22+
EndGlobal

VFLibTest/CountMatching.cpp

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#include "argraph.h"
2+
#include "argedit.h"
3+
#include "match.h"
4+
#include "vf2_sub_state.h"
5+
6+
#include <fstream>
7+
8+
#define MAXNODES 200
9+
10+
int matchingCnt = 0;//记录发现的匹配数
11+
12+
void getNodeEdge(ARGEdit &ed,int count)
13+
{
14+
int i, j;
15+
for (int i = 0; i < count; i++)
16+
ed.InsertNode(NULL);
17+
18+
for (i = 0; i < count; i++)
19+
for (j = 0; j < count; j++)
20+
if (i != j)
21+
ed.InsertEdge(i, j, NULL);
22+
}
23+
24+
bool graph_visitor(int n, node_id ni1[], node_id ni2[], void *usr_data)
25+
{
26+
/*************** VFLib文档中的示例代码,匹配对储存在ni1和ni2中 **************/
27+
//FILE *f = (FILE *)usr_data;
28+
////将统计到的匹配节点输出到文件中
29+
//fprintf(f,"n:%d",n);
30+
//fprintf(f, "\n");
31+
//for (int i = 0; i < n; i++)
32+
// fprintf(f,"(%hd,%hd)",ni1[i],ni2[i]);
33+
34+
//fprintf(f,"\n");
35+
/*************** VFLib文档中的示例代码,匹配对储存在ni1和ni2中 **************/
36+
37+
matchingCnt++; //我只需要得到匹配的数量
38+
39+
//返回false用于搜索下一个匹配
40+
return false;
41+
}
42+
43+
int main()
44+
{
45+
//创建模式图和数据图的ed
46+
ARGEdit pattern_ed,data_ed;
47+
48+
getNodeEdge(pattern_ed, 3);
49+
getNodeEdge(data_ed,4);
50+
51+
Graph pattern_g(&pattern_ed),data_g(&data_ed);
52+
53+
//创建子图异构的初始状态
54+
VF2SubState s0(&pattern_g, &data_g);
55+
56+
//创建输出文件
57+
FILE *f = fopen("subIso.txt","w");
58+
59+
match(&s0,graph_visitor,f);
60+
61+
fprintf(f, "n: %d", matchingCnt);//将找到的匹配数输出至文本
62+
63+
fclose(f);
64+
65+
return 0;
66+
}

VFLibTest/VFLibTest.vcxproj

+125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|Win32">
5+
<Configuration>Debug</Configuration>
6+
<Platform>Win32</Platform>
7+
</ProjectConfiguration>
8+
<ProjectConfiguration Include="Release|Win32">
9+
<Configuration>Release</Configuration>
10+
<Platform>Win32</Platform>
11+
</ProjectConfiguration>
12+
</ItemGroup>
13+
<ItemGroup>
14+
<ClInclude Include="allocpool.h" />
15+
<ClInclude Include="argedit.h" />
16+
<ClInclude Include="argloader.h" />
17+
<ClInclude Include="argraph.h" />
18+
<ClInclude Include="dict.h" />
19+
<ClInclude Include="error.h" />
20+
<ClInclude Include="gene.h" />
21+
<ClInclude Include="gene_mesh.h" />
22+
<ClInclude Include="match.h" />
23+
<ClInclude Include="sd_state.h" />
24+
<ClInclude Include="sortnodes.h" />
25+
<ClInclude Include="state.h" />
26+
<ClInclude Include="ull_state.h" />
27+
<ClInclude Include="ull_sub_state.h" />
28+
<ClInclude Include="vf2_mono_state.h" />
29+
<ClInclude Include="vf2_state.h" />
30+
<ClInclude Include="vf2_sub_state.h" />
31+
<ClInclude Include="vf_mono_state.h" />
32+
<ClInclude Include="vf_state.h" />
33+
<ClInclude Include="vf_sub_state.h" />
34+
<ClInclude Include="xsubgraph.h" />
35+
</ItemGroup>
36+
<ItemGroup>
37+
<ClCompile Include="argedit.cc" />
38+
<ClCompile Include="argloader.cc" />
39+
<ClCompile Include="argraph.cc" />
40+
<ClCompile Include="error.cc" />
41+
<ClCompile Include="gene.cc" />
42+
<ClCompile Include="gene_mesh.cc" />
43+
<ClCompile Include="match.cc" />
44+
<ClCompile Include="sd_state.cc" />
45+
<ClCompile Include="sortnodes.cc" />
46+
<ClCompile Include="CountMatching.cpp" />
47+
<ClCompile Include="ull_state.cc" />
48+
<ClCompile Include="ull_sub_state.cc" />
49+
<ClCompile Include="vf2_mono_state.cc" />
50+
<ClCompile Include="vf2_state.cc" />
51+
<ClCompile Include="vf2_sub_state.cc" />
52+
<ClCompile Include="vf_mono_state.cc" />
53+
<ClCompile Include="vf_state.cc" />
54+
<ClCompile Include="vf_sub_state.cc" />
55+
<ClCompile Include="xsubgraph.cc" />
56+
</ItemGroup>
57+
<PropertyGroup Label="Globals">
58+
<ProjectGuid>{FFB53DB9-F2DA-4B52-8792-C34674B14B75}</ProjectGuid>
59+
<Keyword>Win32Proj</Keyword>
60+
<RootNamespace>VFLibTest</RootNamespace>
61+
</PropertyGroup>
62+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
63+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
64+
<ConfigurationType>Application</ConfigurationType>
65+
<UseDebugLibraries>true</UseDebugLibraries>
66+
<PlatformToolset>v120</PlatformToolset>
67+
<CharacterSet>Unicode</CharacterSet>
68+
</PropertyGroup>
69+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
70+
<ConfigurationType>Application</ConfigurationType>
71+
<UseDebugLibraries>false</UseDebugLibraries>
72+
<PlatformToolset>v120</PlatformToolset>
73+
<WholeProgramOptimization>true</WholeProgramOptimization>
74+
<CharacterSet>Unicode</CharacterSet>
75+
</PropertyGroup>
76+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
77+
<ImportGroup Label="ExtensionSettings">
78+
</ImportGroup>
79+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
80+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
81+
</ImportGroup>
82+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
83+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
84+
</ImportGroup>
85+
<PropertyGroup Label="UserMacros" />
86+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
87+
<LinkIncremental>true</LinkIncremental>
88+
</PropertyGroup>
89+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
90+
<LinkIncremental>false</LinkIncremental>
91+
</PropertyGroup>
92+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
93+
<ClCompile>
94+
<PrecompiledHeader>
95+
</PrecompiledHeader>
96+
<WarningLevel>Level3</WarningLevel>
97+
<Optimization>Disabled</Optimization>
98+
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
99+
</ClCompile>
100+
<Link>
101+
<SubSystem>Console</SubSystem>
102+
<GenerateDebugInformation>true</GenerateDebugInformation>
103+
</Link>
104+
</ItemDefinitionGroup>
105+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
106+
<ClCompile>
107+
<WarningLevel>Level3</WarningLevel>
108+
<PrecompiledHeader>
109+
</PrecompiledHeader>
110+
<Optimization>MaxSpeed</Optimization>
111+
<FunctionLevelLinking>true</FunctionLevelLinking>
112+
<IntrinsicFunctions>true</IntrinsicFunctions>
113+
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
114+
</ClCompile>
115+
<Link>
116+
<SubSystem>Console</SubSystem>
117+
<GenerateDebugInformation>true</GenerateDebugInformation>
118+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
119+
<OptimizeReferences>true</OptimizeReferences>
120+
</Link>
121+
</ItemDefinitionGroup>
122+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
123+
<ImportGroup Label="ExtensionTargets">
124+
</ImportGroup>
125+
</Project>

VFLibTest/VFLibTest.vcxproj.filters

+141
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup>
4+
<Filter Include="源文件">
5+
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6+
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7+
</Filter>
8+
<Filter Include="头文件">
9+
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10+
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
11+
</Filter>
12+
<Filter Include="资源文件">
13+
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14+
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15+
</Filter>
16+
</ItemGroup>
17+
<ItemGroup>
18+
<ClInclude Include="allocpool.h">
19+
<Filter>头文件</Filter>
20+
</ClInclude>
21+
<ClInclude Include="argedit.h">
22+
<Filter>头文件</Filter>
23+
</ClInclude>
24+
<ClInclude Include="argloader.h">
25+
<Filter>头文件</Filter>
26+
</ClInclude>
27+
<ClInclude Include="argraph.h">
28+
<Filter>头文件</Filter>
29+
</ClInclude>
30+
<ClInclude Include="dict.h">
31+
<Filter>头文件</Filter>
32+
</ClInclude>
33+
<ClInclude Include="error.h">
34+
<Filter>头文件</Filter>
35+
</ClInclude>
36+
<ClInclude Include="gene.h">
37+
<Filter>头文件</Filter>
38+
</ClInclude>
39+
<ClInclude Include="gene_mesh.h">
40+
<Filter>头文件</Filter>
41+
</ClInclude>
42+
<ClInclude Include="match.h">
43+
<Filter>头文件</Filter>
44+
</ClInclude>
45+
<ClInclude Include="sd_state.h">
46+
<Filter>头文件</Filter>
47+
</ClInclude>
48+
<ClInclude Include="sortnodes.h">
49+
<Filter>头文件</Filter>
50+
</ClInclude>
51+
<ClInclude Include="state.h">
52+
<Filter>头文件</Filter>
53+
</ClInclude>
54+
<ClInclude Include="ull_state.h">
55+
<Filter>头文件</Filter>
56+
</ClInclude>
57+
<ClInclude Include="ull_sub_state.h">
58+
<Filter>头文件</Filter>
59+
</ClInclude>
60+
<ClInclude Include="vf_mono_state.h">
61+
<Filter>头文件</Filter>
62+
</ClInclude>
63+
<ClInclude Include="vf_state.h">
64+
<Filter>头文件</Filter>
65+
</ClInclude>
66+
<ClInclude Include="vf_sub_state.h">
67+
<Filter>头文件</Filter>
68+
</ClInclude>
69+
<ClInclude Include="vf2_mono_state.h">
70+
<Filter>头文件</Filter>
71+
</ClInclude>
72+
<ClInclude Include="vf2_state.h">
73+
<Filter>头文件</Filter>
74+
</ClInclude>
75+
<ClInclude Include="vf2_sub_state.h">
76+
<Filter>头文件</Filter>
77+
</ClInclude>
78+
<ClInclude Include="xsubgraph.h">
79+
<Filter>头文件</Filter>
80+
</ClInclude>
81+
</ItemGroup>
82+
<ItemGroup>
83+
<ClCompile Include="argedit.cc">
84+
<Filter>源文件</Filter>
85+
</ClCompile>
86+
<ClCompile Include="argloader.cc">
87+
<Filter>源文件</Filter>
88+
</ClCompile>
89+
<ClCompile Include="argraph.cc">
90+
<Filter>源文件</Filter>
91+
</ClCompile>
92+
<ClCompile Include="error.cc">
93+
<Filter>源文件</Filter>
94+
</ClCompile>
95+
<ClCompile Include="gene.cc">
96+
<Filter>源文件</Filter>
97+
</ClCompile>
98+
<ClCompile Include="gene_mesh.cc">
99+
<Filter>源文件</Filter>
100+
</ClCompile>
101+
<ClCompile Include="match.cc">
102+
<Filter>源文件</Filter>
103+
</ClCompile>
104+
<ClCompile Include="sd_state.cc">
105+
<Filter>源文件</Filter>
106+
</ClCompile>
107+
<ClCompile Include="sortnodes.cc">
108+
<Filter>源文件</Filter>
109+
</ClCompile>
110+
<ClCompile Include="ull_state.cc">
111+
<Filter>源文件</Filter>
112+
</ClCompile>
113+
<ClCompile Include="ull_sub_state.cc">
114+
<Filter>源文件</Filter>
115+
</ClCompile>
116+
<ClCompile Include="vf_mono_state.cc">
117+
<Filter>源文件</Filter>
118+
</ClCompile>
119+
<ClCompile Include="vf_state.cc">
120+
<Filter>源文件</Filter>
121+
</ClCompile>
122+
<ClCompile Include="vf_sub_state.cc">
123+
<Filter>源文件</Filter>
124+
</ClCompile>
125+
<ClCompile Include="vf2_mono_state.cc">
126+
<Filter>源文件</Filter>
127+
</ClCompile>
128+
<ClCompile Include="vf2_state.cc">
129+
<Filter>源文件</Filter>
130+
</ClCompile>
131+
<ClCompile Include="vf2_sub_state.cc">
132+
<Filter>源文件</Filter>
133+
</ClCompile>
134+
<ClCompile Include="xsubgraph.cc">
135+
<Filter>源文件</Filter>
136+
</ClCompile>
137+
<ClCompile Include="CountMatching.cpp">
138+
<Filter>源文件</Filter>
139+
</ClCompile>
140+
</ItemGroup>
141+
</Project>

0 commit comments

Comments
 (0)