Git Product home page Git Product logo

daf's Introduction

DAF [SIGMOD 2019]

Efficient Subgraph Matching: Harmonizing Dynamic Programming, Adaptive Matching Order, and Failing Set Together

Build

mkdir build
cd build
cmake ..
make

Run

Options:
-d,   specify data graph file name
-q,   specify query graph file name
-m,   specify the number of matches to find (if not specified, find all matches)
Example:
./build/main/DAF -d dataset_example/data.graph -q dataset_example/query.graph -m 10

Input File Format

The graph file format for data graphs and query graphs is a text format to store an vertex-labeled undirected graph.

  • The first line of the file should be "t #vertices #edges".
  • Following lines of "v vertex-ID vertex-label" indicate the vertices in the graph.
  • The vertices should be written in the file in ascending order of their IDs, and a vertex ID should be in [0, #vertices - 1].
  • Following lines of "e vertex-ID1 vertex-ID2" after the vertices indicate the undirected edges in the graph.

You can find example data graph and query graph files under the dataset_example directory.

For example:

t 4 5
v 0 0
v 1 1
v 2 2
v 3 3
e 0 1
e 0 2
e 1 2
e 1 3
e 2 3

daf's People

Contributors

ctaroot avatar gmgu avatar jihoonjang avatar kerneipanic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

daf's Issues

Algorithm을 선택한 이유

2015-15838
보고서 요구사항 중에 Please describe your algorithm / write the reason why you choose that algorithm 이라는 항목이 있는데,
DAG를 만드는 알고리즘을 여러 가지 시도해보고 DAF에 넣었을 때 결과가 가장 좋은 것을 최종 결과로 선택한 경우, 이렇게 여러 알고리즘을 시도해본 결과 가장 좋은 결과가 나왔다는 식으로 경험적으로 해당 알고리즘의 선택 이유를 증명해도 될까요? reason을 설명할 때 이 정도로 충분한지 아니면 선택한 DAG의 어떤 특성이 DAF 알고리즘의 성능을 높였는지에 대한 설명이 필요한지 궁금합니다.

코드 수정 문의

[2017-14605]

카피 체크 관련하여 문의드립니다.

Github에 올라와있는 dag.cpp 코드의 핵심적인 부분만 수정하고, 자료구조나 파싱 관련된 코드는 그대로 재사용하여도 표절검사 관련하여 문제가 없는지 궁금합니다.

감사합니다.

Label 질문

2016-12184

안녕하세요 밑의 질문에서 label 은 무작위로 주어진다고 하셨는데 그럼 특정 범위안에서 무작위로 주어지는 건가요 아님 범위도 정해지지않는건가요??

코드 구현 관련 문의입니다!

2015-12377

안녕하세요 조교님,

채점기준에 보면
Screenshot from 2019-06-13 10-39-23
35 포인트 중 5포인트가 original algorithm보다 성능이 좋을 때 부여된다고 되어있는데,
그러면 논문에 쓰인 알고리즘 즉, dag.cpp로 제공해주신 코드를 modify하여 성능을 향상시키는 것이 이 숙제의 목표인가요?

office hour 때 여쭤봤을 때는 논문에 있는 그대로 구현해도 된다고 하셨는데, 그러면 언어를 c++로 선택한 사람들은 그냥 dag.cpp를 거의 갖다써도 되는건지, 아니라면 어느정도까지만 유사하게 작성해야하는건지 궁금합니다!
그리고 논문을 그대로 구현한다면 만점에 가깝게 받을 수 있는건가요?

그리고 시간 비교는 언어마다 다르게 비교하실건지 궁금합니다!

input query 관련 질문

2014-12142

97 60011.8 60023.1 12025942 0 1
98 42.0499 43.2624 8320 100000 0

이런식으로 출력되는 것에서
마지막에 해당하는 숫자가 etl에 올려주신 파일에서 "is it solved?" 라고 표현하셨는데요,
이게 embedding 을 하나라도 찾았는지 여부인지 아니면
큰 그래프에서 input query의 embedding이 없다는 것을 확신하게 되는 경우에도 1이 나오는지 궁금합니다.
그리고 이번 과제의 모든 input query들은 모두 주어진 큰 그래프에서 embedding이 존재하는 query들인지 궁금합니다.

additional point와 C++ run.sh관련 질문드립니다

2013-10756

알고리즘 과제4 관련하여 2가지 질문드립니다.

  1. etl 공지에 보면 "If average performance is greater than original algorithm, you got a 5 additional points."라고 되어있는데, average performance라는 부분이 명확하지 않은 것 같아 설명 부탁드립니다. 올려주신 채점기준에서 3가지 항목 모두 만점을 받아야만 받을 수 있는 것인가요?

  2. 올려주신 template에서 C++ run.sh에 g++ -std=c++11 main.cpp 가 아니라 그냥 g++ main.cpp 로 되어서 오류가 발생하는데 수정해서 진행해도 괜찮을까요?

data graph 문의

2014-14966

조교님 안녕하세요?

  1. 채점할 때 주어지는 data graph G와 query graph q는 테스트로 주어진 human, human_40n과 정확히 같은 파일인지 궁금합니다.

  2. average recursive call count의 경우 (새롭게 만든 .dag 파일로 얻은 결과를 test_result, 원래 주어진 코드로 생성한 .dag 파일로 얻은 결과를 original_result라 했을 때) test_result 파일에서 조회한 average recursive call count의 값은 original_result의 값보다 훨씬 크게 나오는데 python sort_result.py original_result test_result를 시행했을 때 비교 결과에서는 test1_result의 Average #recursive calls의 값이 original_result보다 훨씬 줄어든 값으로 표시됩니다.
    이렇게 값이 다르게 나오는 것은 sort_result.py에서는 두 파일의 end query 중 그 값이 작은 것을 기준으로 해당 개수만큼 평균값을 구해서 그런 것 같은데 채점을 할 때는 end query 수와는 상관없이(즉 python sort_result.py를 이용한 비교값과는 상관 없이) result 파일의 총 평균 recursive call 횟수만 고려하여 반영하는지 궁금합니다.
    또 두 알고리즘을 비교할 때 etl에서는 python sort_result.py를 사용하여 recursive call을 비교할 수 있다고 되어 있는데 그렇게 하면 실제로는 총 평균 recursive call 횟수가 주어진 알고리즘보다 훨씬 크게 나옴에도 불구하고 작게 나온 것으로 레포트를 작성할 수 있습니다. 레포트를 작성할 때 python sort_result.py를 사용하지 말고 result 파일에서의 값을 서로 비교하여 작성해야 하나요?

감사합니다.

rooted DAG 의미

2017-15049

// 이전 질문 내용이 논문에 잘 나와있어 수정했습니다.

논문에서 정의하는 rooted DAG의 의미는 정확히 한 정점만이 incoming edge가 없도록 하는 DAG를 말하는 것 같은데, data format 예시로 올려주신 3 0 1 2 의 query graph같은 경우 3과 0 모두 incoming edge가 없습니다. 이러한 DAG도 이번 과제에서 말하는 rooted DAG에 해당하는 것인가요?
정확히 이번 과제에서 rooted DAG의 의미가 무엇인지 궁금합니다.

DAF 알고리즘 코드 제공문의

2017-19313

혹시 DAF 알고리즘의 다른 부분(buildDAG() 외에) 코드도 제공해주실 수 있나요?
논문 읽는 것 뿐 아니라 코드도 볼 수 있다면 더 잘 이해가 될 것 같아서 문의합니다.

제출 시간 문의

2011-13330
과제 제출 시간은 6.19 11:59 PM까지인지 궁금합니다.

dag.cpp 코드에서 relabel 관련

[2015-11759]
안녕하세요 조교님
dag.cpp 코드에서 Graph data를 두 번째 읽을 때, label을 rename 해주는 과정이 있던데,
그 과정이 어떤 역할을 하는 것인지 잘 모르겠어서 질문 남깁니다.
label을 rename 해주는 게 성능에 어떤 영향을 주나요?

과제에서 구현해야 하는 부분 질문

2017-18570

안녕하세요, 논문을 읽다가 궁금한 점이 생겨서 질문드립니다.

논문에서 Section 3 를 보면 DAF 알고리즘에 대한 간략한 설명이 있는데요,
과제의 목표가 BuildDAG 함수를 더욱 발전시키는 것이 맞나요?

다른 부분도 추가적으로 최적화를 수행해야 하는지, 제가 잘 이해했는지 궁금합니다.

과제 제출 문의

2014-14966

안녕하세요? 과제 제출과 관련하여 질문이 있습니다.
팀별로 과제를 한 후 같은 소스코드를 제출해도 되는 것으로 알고 있는데, 레포트도 하나만 쓴 후 나머지 팀원이 같은 레포트를 제출해도 되는지 궁금합니다.
즉 과제로 제출하는 폴더 내부에 포함되는 main.cpp와 report.pdf, images1.jpg와 images2.jpg 파일 모두가 같은 팀원이라면 같은 내용으로 통일해서 제출해도 되나요?
감사합니다.

보고서 알고리즘 설명 범위 질문드립니다.

2014-18200

조교님께,
#26 에서 논문 알고리즘의 일부를 변형시킨 경우 전체 알고리즘에 대한 설명 또한 필요하다고 답변하셨는데, 이 때 전체 알고리즘이라는 것이 DAG build 이후에 이를 사용하여 어떻게 subgraph matching까지 진행하는지까지 포함하는 것인가요? 아니면 DAG를 어떻게 만드는지에 대한 알고리즘만인가요?
감사합니다.

total number of found matches에 관하여

2017-11824
안녕하세요 조교님
현재 채점기준으로는 average total time per query, average recursive call count, end queries 이 세가지만 나와있습니다. 그러면 total number of found matches는 신경쓰지 않아도 괜찮나요??
감사합니다.

시간 제공 문의

2017-19313
혹시 조교 님의 채점 환경에서 제공해주신 dag.cpp로 수행하여 걸린 시간을 제공해 주실 수 있나요?

아니면 이것이 제공해주신 ppt에 있는 값과 동일한가요...?

제 환경에서 제공해주신(즉 수정하지 않은) dag.cpp 로 수행시간을 측정한 것과 ppt버전이 차이가 너무 크게 나기 때문에 문의합니다 (ppt 버전이 10배 느립니다). --> 또한 이 시간 차이가 end queries의 수에도 영향을 미치기 때문에 end queries 숫자도 다릅니다...! (recursive call 수도 다른데 이것은 왜 다른지 모르겠습니다.)

이를 제공해 주신다면, 각자 환경 별로 시간 비율을 비교할 수 있을 듯하여 도움이 많이 될 것 같습니다!

항상 감사합니다

아무것도 수정하지 않은 테스트 결과

2017-17018

image

안녕하세요, 조교님 아무것도 수정하지 않은 테스트 결과에 대해 여쭤볼 것이 있어 질문 남기게 되었습니다.

제가 실행한 결과가 위와 같이 나오는데 Average elapsed time 과 Average #recursive calls 이 모두 0이 나오는 것이 정상적인 상황인가요?

감사합니다.

변경한 코드로도 같은 루트가 선택되는 경우에 대한 질문

2012-12506
안녕하세요!
저희가 select root의 알고리즘을 변경했는데 시뮬레이션을 돌려보니 수행시간은 변화가 있었지만 recursive call의 개수에 변화가 없습니다. 아마도 변경된 알고리즘으로도 같은 루트가 선택된 것 같은데, 이러한 경우도 인정이 되는 것인가요?

macos 지원

2014-11618

안녕하세요! macos에서 daf binary가 돌아가지않습니다.

Error message

$ ./daf_1min -d human -q human_10n -n 100
exec format error: ./daf_1min

How to reproduce

macos에서

  1. ./compile.sh
  2. ./program human human_10n 100 > human_10n.dag
  3. sudo chmod +x daf_1min
  4. ./daf_1min -d human -q human_10n -n 100

label 관련 질문

2017-12690

DAF 알고리즘이 해결하려는 문제인 subgraph matching과 label의 존재가 무슨 관계가 있는지 모르겠습니다. 질문 #31 에서 label이 이진 탐색을 용이하게 위해서라고 답변해 주셨는데 그렇다면 아무 의미 없이 성능만을 위해 존재하는 것인가요? vertex의 label이라는 게 실제로 어떤 의미를 갖나요?

자바로 테스트 하는 법

2008-12407

Main.java를 이용해서 *.dag를 만들고
만들어진 dag file을 daf_1min을 통해 결과를 확인하면 되는지 궁금합니다.
가령 제가 만든 dag file이 human.dag라고 하면
"./daf_1min -d human -q human_40n -a human.dag -n 100"
을 실행해서 나오는 결과로 평가받는 게 맞나요?

java 관련 문의

[2015-11759]
안녕하세요 조교님
java 사용 관련해서 질문합니다.
파일을 읽을 때 저는 평소에 scanner를 사용하는데,
이게 input의 크기가 크면 굉장히 시간이 오래걸리더라고요.
Buffered InputStream을 쓰지 않고 그냥 scanner를 사용해서 생기는
시간도 혹시 채점 과정의 성능과 관련이 있을까요?

프로그램 실행 시간 관련 질문

2014-16730

조교님께서 주신 예시 ppt에서 소요되는 시간은 채점기준보다 오래걸리는데 실제 제공받은 파일을 수정하지 않고 실행해본 결과 상당부분 이미 적정 기준 내에 들어옵니다 (average search time 108ms, total time per query 112ms, average recursive call 30886, endquery 82). 프로그램이 제대로 실행된게 맞나요?

혹시 조금 내용을 변경했는데 코드 실행 시간이 많이 개선되지 못하지만 기존 제공받은 코드 결과와 유사하면 그에 맞는 점수를 부여받게 되는가요?

github에 있는 소스코드를 그대로 수행시킨 경우 질문입니다.

2012-12506
image

그냥 깃헙의 코드를 클론받아서 수행할때, readme 파일에 있는대로라면 human_10n 파일이 있어야 하는데 없어서, 그것 대신 주어진 human_40n을 이용해서 수행해보니 오래 기다려도 결과가 나오지 않습니다. 1분이 지나면 원래 멈춰야 하는 것으로 알고 있는데 어떤 문제인지 모르겠습니다. 1분이라는 것이 실패한 경우에 1분동안 기다린다는 것인가요?

buildDAG에 따라 solved가 달라질 수 있는지

안녕하세요.
buildDAG에서 간단한 수정을 한 후 결과적으로 DAG까지는 바뀌는 걸 확인했습니다.
그리고 결과를 봤는데 이전 결과랑 비슷하지만 일부 결과에서 solved가 다른 걸 확인했습니다. 원래 알고리즘대로 하면 solved(1)인데 바꾼 알고리즘대로 하면 0이 되는 것도 있고 반대의 경우도 있습니다.
정상적인 경우인지 궁금합니다.
아니라면 저희 알고리즘이 틀려서 buildDAG 부분을 다시 고쳐야 하는지 아니면 DAG가 달라서 '시간 내에' 못찾을 수도 있는 건지 알고 싶습니다.

그리고 기본적으로 sorting 기반으로 알고리즘이 짜여 있는 것 같은데 얼마나 고치는 게 유효한 것으로 인정이 되는지 궁금합니다.
아예 다른 접근을 해야 하는지 아니면 원래 있는 알고리즘에서 한두줄 고치는 것도 유효한 것으로 인정이 되는 건지가 궁금합니다.(예를 들어, sorting 기준만 변경)

Rooted Dag에 관한 질문입니다.

2013-11759
안녕하세요 조교님 이번과제에서 Rooted Dag에 대해 질문이 있습니다.

  1. 저희가 뽑은 permutation이 rooted dag인지 판별하는 코드는 자체적으로 제작해야하나요?
  2. 만약 Rooted dag가 아닐 경우 penalty가 있다고 하는데 정확하게 어떤 penalty가 적용되는지 알고 싶습니다.
    감사합니다.

Grading Policy 질문

2014-19797

조교님 안녕하세요, Grading Policy 질문 드립니다.

기존의 HW4 requirements에서는 "If average performance is greater than original algorithm, you got a 5 additional points." 명시되어있는데요.

나중에 올려주신 Grading policy를 보면 average total time per Query가 원래 알고리즘의 0.9배보다 적어야 만점인 걸로 바뀌었습니다.

여전히 가산점 5점(performance가 더 좋을 때)이 유효한 것인가요?

수행시간 기준 질문

2014-12142

이번 과제 채점기준에 average total time per query가 있는데요,
수행시간 측정은 작동되는 환경에 따라 달라질것 같아서 어느 기준으로 생각해야할지 궁급합니다.
감사합니다.

Permission denied가 뜹니다.

2013-11759
안녕하세요 조교님 리눅스 환경에서
./daf_1min -d human -q human_40n -n 100 를 입력한 결과
bash: ./daf_1min: Permission denied 가 뜹니다. 어떻게 해야할까요??

github 코드 구현 범위에 대한 질문

2017-17319

github에서 받아 구현중인 DAG.cpp에 논문에 포함된 최적화 기능이 모두 구현되어 있는 것 같지 않은 것 같아 질문드립니다. candidat set optimization과 같은 다른 최적화 작업들은 다른 파일에서 이미 구현이 되어 있는 건가요?

과제 채점 기준 관련 질문.

2019-90988

저희가 비교적 간단하게 만든 DAG 코드를 채점 프로그램을 사용해서 점수를 보았을 때 만점이 나왔는데, 추가로 이를 발전시킬 방법을 찾아야 하나요? 이대로 보고서와 프로그램을 제출해도 감점이 없는지 여쭤보고 싶습니다.

감사합니다.

main.cpp 질문

안녕하세요?

  1. 과제를 제출할 때 main.cpp 파일을 제출하라고 되어 있는데 앞서 답변하신 내용처럼 dag.h와 수정한 dag.cpp와 기존 main.cpp를 합치면 g++ -std=c++11 main.cpp dag.cpp -o program으로는 컴파일이 되지 않습니다.
    채점하실 때는 dag.cpp 부분을 뺀 g++ -std=c++11 main.cpp -o program으로 컴파일하신다고 생각하면 될까요?

  2. 당연한 것이겠지만 채점하실 때 채점 폴더에 human, human_40n, daf_1min이 함께 들어있다고 생각하면 되는지 궁금합니다.

감사합니다.

Label of Vertex에 대해 질문 드립니다.

2016-18907

안녕하세요.

논문의 내용을 보면 label에 따라 묶고 정렬하는 과정이 있는 것 같은데, DAG만 만드는 것이 목적이라면 그 과정에서는 label을 고려할 필요가 없어 보입니다. label을 고려하는 것이 알고리즘의 성능을 높이기 위한 것인가요, 아니면 result permutation에 label을 고려해야 하는 조건이 있나요? 또한 query graph에서 각 vertex의 label은 특정한 패턴에 따라 부여되는 것인지 아니면 무작위로 부여되는 것인지도 궁금합니다.

DAG의 표현의 유일성에 관한 문의

2015-18764

한 DAG를 vertex의 linear sequence로 표현하여 DAF에 input으로 제공하는데 이때 그 DAG로부터 만들어지는 vertex의 linear sequence는 유일한가요?

DAF에 저희가 선택한 DAG의 linear sequence를 입력으로 주는 걸로 알고 있습니다.

이때 저희가 해야 하는 게 DAG를 잘 뽑아서 DAF의 성능을 개선시키는 건지,

아니면 DAG 뽑는 방식은 논문 방식(깃헙 방식) 그대로 냅두고 (만일 1번에서 질문드린것 처럼 여러 sequence로 표현이 가능하다면) 그 DAG를 다른 방식의 linear sequence로 표현하여 DAF의 성능을 개선시켜도 되는건지

궁금합니다.

감사합니다.

JAVA에서 args표현에 관하여 문의드립니다.

2017-10488
안녕하세요 조교님!
JAVA에서 args인자에 대한 주석에 오류가 있는것 같아 이슈에 올립니다.
C나 C++과 달리 JAVA에서는 args[0]에 첫번째 인자가 들어가는 것으로 알고 있습니다.
따라서
//args[0] : name of data query file
//args[1] : name of query graph file
//args[2] : the number of query in query graph file
이렇게 보고 코딩을 했고, 올바른 결과를 도출했습니다.
이 형식대로 제출을 하고자 하는데 혹시 이상이 있다면 답변해주시면 감사하겠습니다! :)

보고서 알고리즘 설명 관련 질문

2017-15049

보고서 3번째 항목 알고리즘 설명 부분에서,
저희가 사용한 알고리즘이 논문에 제시된 방법에서 일부만 조금 변형된 알고리즘이라면
변형된 부분만 설명하면 되나요 아니면 알고리즘 전체를 설명해야 하나요?

알고리즘 질문입니다

2015-14403

만든 알고리즘이 주어진 케이스에 대해 왜 더 빠를 수 있는 지에 대한 수학적인 설명이 필요한가요? 아니면 시행착오로 찾아도 되는건가요?

기본 뼈대 실행으로부터의 문제

2015-17069

dag.cpp / main.cpp 를 이용하여 human.dag를 만들었고, 예시처럼 daf1_min 을 실행한 결과, 기존 알고리즘 방식으로는 결과가 나오는데 answer를 넣는 형식으로는 몇초있다가 종료되면서 다음과 같은 결과가 나옵니다. 전에 있던 issue에서 폴더에 따로 넣어보라고 하셔서 해봤지만 작동되지 않습니다. 혹시 원인을 알 수 있을까요?[
캡처
캡처2

](url)

hw4

leave a question here.

dag.cpp 코드에서 idxSortedData 관련

idxSortedData에 대한 설명은
int* idxSortedData = NULL; //idxSortedData[l] contains the last index in sortedData such that labelData[sortedData[index]] is l
라고 되어 있고

selectRoot()에서 실제로 idxSortedData를 사용하는 방법을 살펴보니
int start = idxSortedData[label];
int end = idxSortedData[label + 1];
라고 되어 있습니다. 그런데 idxSortedData가 sortedData의 first index를 가지고 있어야 idxSortedData[label] ~ idxSortedData[label+1]이 해당 label의 data를 살펴볼 수 있게 해 주는 것이 아닌가요?
잘 이해가 되지 않아서 질문합니다ㅠㅠ

과제 제출 문의

안녕하세요?
etl에 과제 제출 양식이

ex >
201927354.zip
->201927354
-->main.py
-->document.doc

로 되어 있는데 다른 질문 대답에서 팀당 한 명만 소스 코드와 레포트를 제출하면 된다고 하셨습니다.
그렇다면 해당 팀의 다른 팀원이 누구인지 레포트 첫장에 써 놓고 과제 제출 디렉토리는 제출하는 팀원 학번으로 생성해서 그 팀원 메일로 최종 제출하면 되는지 궁금합니다.

감사합니다.

성능 평가 관련 질문

2017-12690

성능 평가의 기준을 다음과 같이 제시해 주셨습니다.

  • average total time per query
  • average recursive call count
  • end queries

그런데, end queries가 하나 늘어난 대신 그 query에 대한 시간과 재귀호출 횟수가 높은 경우(원래 시간 초과였던 query가 시간초과하지 않도록 개선했는데, 재귀호출이 100만 번인 경우) 가 자주 발생하고 있습니다.

이런 경우는 차라리 해당 쿼리를 버리는 것이 점수가 잘 나오는 아이러니한 상황이 되는데, 이에 대해서 평가방식이 조금 이상하다고 생각합니다.

만들어진 dag permutation은 어디다 저장을 해야할까요..?

[2015-11759]
조교님 정말 수고가 많으십니다.

결과적으로 완성되는 각 query에 대한 permutation은 어디다 저장을 해놓아야 하는건가요?
Main 함수 내에 자체적으로 새로운 파일을 생성해서 거기다 저장해놓아야 하나요?

  1. java 템플릿에서 아래의 파일에 대한 이해가 정확한지 확인 부탁드립니다..
    args[1] - data graph 정보 (템플릿 내의 human 파일)
    args[2] - query graph 정보 (템플릿 내의 human_40n 파일)
    args[3] - query graph 파일에 query 그래프 개수. 그러면 이 파일에는 숫자 딱 하나가 들어있는 건가요?

그래프 환경 질문.

2014-12308

조교님 안녕하세요
그래프 인풋 관련하여 몇 가지 질문이 있습니다.

  1. 데이터/쿼리 그래프에서 다음과 같은 상황이 발생할 수 있는지 궁금합니다

    1. 한 vertex에서 자기 자신을 가리키는 loop
    2. 쿼리 그래프가 데이터보다 적은 label을 보유할 수 있는지(예: 그래프에는 A,B,C,D총 4가지 label이 있는데 쿼리는 A,B,C로만 되는지)
    3. 쿼리 그래프에 같은 label이 중복될 수 있는지
  2. human_40n의 내용은
    t graph No. Vertex count Edge count
    vertexa vertex1 vertex2 vertex3 ...

    where vertex 1,2,3 are connected to vertexa

    로 이해했습니다.

    그러나 중간에 보면 (line 311)
    22 26 4 4 6 21 23 처럼 중복된 vertice( 4 & 4)가 있는 것 같습니다.

    혹시 human_40n에 대해 잘못 이해한 게 있는지 궁금합니다.

  3. 혹시 dag output format이 어떻게 되는지 설명해주실 수 있을까요? 전체적으로 인풋을 읽고 아웃풋을 쓰는 과정이 어려워서 헤매고 있습니다.

감사합니다.

추가적으로,
논문을 보면 "...optimize the CS by repeating DAG-graph DP with alternating qD and qD-1"(p.7) 라고 되어있습니다. 그러나 Figure 5 (a)의 경우처럼 leaf가 여러개 있는 경우 qD-1을 어떻게 만드느지, 이때 root는 무엇을 사용해서 refinement를 하는지 궁금합니다.

레포트 작성 시, 팀 전체가 같은 레포트를 써도 되는지, 개별로 레포트는 따로 해야되는지 궁금합니다.

논문에 제시된 buildDAG와 깃헙 코드의 buildDAG 알고리즘이 동일하나요?

2014-10470

논문상에 있는 buildDAG의 알고리즘은

  1. query 그래프에 있는 정점 u 중에서 |Cini(u)| / deg(u)가 최소화되는 것을 해당 그래프의 root로 삼는다.
  2. r을 구한 뒤에는 query 그래프에서 앞에서 구한 root를 가지고 BFS를 수행하되 upper level부터 lower level로 진행한다. (여기에서 level이란 root로 부터 각 정점까지의 거리를 의미한다)
  3. 정점 간에 방향을 정하기 위해서 같은 level의 정점들은 같은 label끼리 묶는다.
  4. Data 그래프에서 가장 드물게 등장하는 label의 그룹들이 DAG 상에서 앞에 나타나도록 순서를 정한다.
  5. 각 그룹 내의 정점들은 degree에 따라 내림차순으로 정렬한다.

인데, 깃헙에 올라와있는 코드도 논문상의 알고리즘을 그대로 따른 것인가요? 아니면 저희가 개선을 위해서는 깃헙의 코드와 논문 상의 내용이 다른 부분을 찾아서 논문에 맞게 구현하여 성능을 개선해야하는건가요?

daf_1min이 time limit 없이 실행되는 문제

2011-13330
Ubuntu 16.04LTS에서 프로그래밍하고 있는데,
daf_1min을 실행시켰을 때 1분이 초과해도 프로그램이 정상 종료되지 않습니다.
./daf_1min -d human -q human_40n -a human_40.dag -n 100와 같이 실행시켰는데
어떻게 해야 1분의 시간 제한을 걸 수 있는 지 궁금합니다.

requirements 관련 질문

2017-14851

Your algorithm have to be different from a given algorithm on github.

라고 requirements에 써있는데 차이에 최소한의 기준이 있나요?

예를 들어 프로그램의 큰 틀은 같지만 root를 선택하는 기준이 달라진다던가 몇몇 케이스에 대한 보강이 이루어지는 정도여도 다른 알고리즘으로 인정받는 것인가요?

과제4 요구사항 질문

2017-16342

안녕하세요, 질문 드립니다.

과제 4에서 하고자 하는 것이 dag.cpp의 buildDAG()를 자신(팀)의 알고리즘으로 구현하라는 것이 맞나요? 그런데 제출해야 하는 것은 main.cpp 하나이니까 github의 1) dag.h, 2) buildDAG()를 수정한 dag.cpp, 3) main.cpp의 내용을.. 제출해야하는 main.cpp 하나에 전부 박아 넣으면 되는건가요?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.