0%

cmake的坑。。。

cmake并不在mingw中

嗯,需要重新安装。。

vscode terminal的环境变量需要重启vscode才能生效

mingw 中的“make” 叫做“mingw32-make”

cmake 默认使用vs的那套工具栈

也就是说需要

cmake -G “MinGW Makefiles” [directoty]

注意这里大小写敏感!

参数没有逗号分隔


常用指令&功能

设置变量

1
2
3
4
# set(Key Value)
set(ABAB 1)

# 需要使用${ABAB}来获取这个变量的值

常用变量

PROJECT_SOURCE_DIR 当前工程的最上层目录

PROJECT_BINARY_DIR 当前工程的构建目录,一般指执行cmake的pwd

添加头文件

1
include_directories()

复制替换文件

1
configure_file(<input>, <output>)

此命令可以将input复制到output同时替换文件中@VARIABLE@的值,替换成为变量

递归CMakeLists.txt

1
2
#添加
add_subdirectory()

生成链接文件

1
add_library() #用法基本与add_executable()相同

link链接文件

1
target_link_libraries() #用法基本与add_executable()相同

生成选项

1
2
if()
endif()
1
2
option(FLAG "help text" <ON/OFF>)
# 使用时可以进行命令行传参

搞了点资料搜索和自行yy

本来就写了写文件系统,后来干脆扩展到整个操作系统了。

Read more »

尝试用二划分问题归约到二维最短路问题。

假设有一个集合$S$, 定义其中的元素为$a_{i}$

权函数为$w: S \rightarrow R$

定义顶点集合为$N = {(x,0), (0,x) | \forall x \in S}$

边集$E = {((a_{i},0), (a_{i+1},0)),((0,a_{i}), (a_{i+1},0)),((0,a_{i}), (0,a_{i+1})),((a_{i},0), (0,a_{i+1}))| 1 \leq i < |S|}$

定义$\large V = (\frac{\sum w(a_{i})}{2}, \frac{\sum w(a_{i})}{2})$

$$\sum$$

正则语言在可列个并和交运算下的不封闭性

引理 Myhill–Nerode定理

在$L \subset \Sigma^{*}$上定义等价关系。

$\forall x, y \in L$ 若$x=y$则有$\forall w \in \Sigma^*$,$xw \in L, yw\in L$同时成立或同时不成立。

记该等价关系为$R$

若$|L/R| < \infty$当且仅当$L$是正则语言。

可列个正则语言的并

定义

字符集$\Sigma = {0,1}$

字符串集合满足以下递推式

$S_{i} = S_{i-1}0^{i}1$

初始条件为

$S_{0}=1$

可以简单列一下前几个

$S_{1}=101,S_{2}=101001,S_{3}=1010010001$

显然一个有限长的字符串形成的集合一定是正则语言。

考虑$\large S = \bigcup_{i=0}^{\infty}{S_{i}}$

显然$S_{i} \neq S_{j}, \forall i\neq j$

则$|S/R| = \aleph_{0}$,故由Myhill-Nerode定理,$S$不是正则语言。

可列个正则语言的交

不妨记各个正则语言为$S_{i}$

根据De Morgan`s law

$$\large S = \bigcap_{i=0}^{\infty}S_{i} = \bigcup_{i=0}^{\infty}\overline{S_{i}}$$

根据前一部分的说明,该结果不一定是正则语言。