Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hayd1n/cs2022301-state-minimization

112.1【資工系】CS2022301 數位系統設計 Digital System Design Project03 State Minimization
https://github.com/hayd1n/cs2022301-state-minimization

ntust

Last synced: 1 day ago
JSON representation

112.1【資工系】CS2022301 數位系統設計 Digital System Design Project03 State Minimization

Awesome Lists containing this project

README

        

# CS2022301-State-Minimization
> 資訊工程系 二年級 乙班 張皓鈞 B11030202

## Requirements
- GNU GCC/Clang with C++14 supported
- CMake >= 3.18
- Make or Ninja build tool

> MSVC(Microsoft Visual C++) may be supported, but not tested

## Build

Use CMake to build the program

```bash
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
```

## Usage

```
Usage: ./state_minimization [--debug]
```

## Example

```bash
./state_minimization ./input.kiss ./output.kiss ./output.dot
Success
```

## Test platform

![neofetch](./assets/neofetch.png)

### macOS

```
Darwin haodeMacBook-Pro.local 23.1.0 Darwin Kernel Version 23.1.0: Mon Oct 9 21:28:12 PDT 2023; root:xnu-10002.41.9~6/RELEASE_ARM64_T8103 arm64
```

### Apple Clang

```
Apple clang version 15.0.0 (clang-1500.0.40.1)
Target: arm64-apple-darwin23.1.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
```

### CMake

```
cmake version 3.26.4
```

### Ninja

```
1.11.1
```

### Graphviz dot

```
dot - graphviz version 9.0.0 (20230911.1827)
```

## Test case

[./examples/set00/case1/input.kiss](./examples/set00/case1/input.kiss)

### Input kiss

```kiss
.start_kiss
.i 1
.o 1
.p 14
.s 7
.r a
0 a b 0
1 a c 0
0 b d 0
1 b e 0
0 c f 0
1 c a 0
0 d h 0
1 d g 0
0 e b 1
1 e c 0
0 f d 0
1 f e 0
0 g f 1
1 g a 0
0 h h 0
1 h a 1
.end_kiss
```

### Input dot

```dot
digraph STG {
rankdir=LR;

INIT [shape=point];
a [label="a"];
b [label="b"];
c [label="c"];
d [label="d"];
e [label="e"];
f [label="f"];
h [label="h"];
g [label="g"];

INIT -> a;
a -> b [label="0/0"];
a -> c [label="1/0"];
b -> d [label="0/0"];
b -> e [label="1/0"];
c -> f [label="0/0"];
c -> a [label="1/0"];
d -> h [label="0/0"];
d -> g [label="1/0"];
e -> b [label="0/1"];
e -> c [label="1/0"];
f -> d [label="0/0"];
f -> e [label="1/0"];
h -> h [label="0/0"];
h -> a [label="1/1"];
g -> f [label="0/1"];
g -> a [label="1/0"];
}
```

### Input PNG

![test_output](./assets/test_output.png)

### Output kiss

```kiss
.start_kiss
.i 1
.o 1
.p 10
.s 5
.r a
0 a b 0
1 a a 0
0 b d 0
1 b e 0
0 d h 0
1 d e 0
0 e b 1
1 e a 0
0 h h 0
1 h a 1
.end_kiss
```

### Output dot

```dot
digraph STG {
rankdir=LR;

INIT [shape=point];
a [label="a"];
b [label="b"];
d [label="d"];
e [label="e"];
h [label="h"];

INIT -> a;
a -> b [label="0/0"];
a -> a [label="1/0"];
b -> d [label="0/0"];
b -> e [label="1/0"];
d -> h [label="0/0"];
d -> e [label="1/0"];
e -> b [label="0/1"];
e -> a [label="1/0"];
h -> h [label="0/0"];
h -> a [label="1/1"];
}
```

### Output PNG

![output](./assets/output.png)