c언어 병행 수행 하여 두개의 문장을 파싱 하여 출력 하는 프로그램

redfoxkiller의 이미지

병행 수행 하여 두개의 문장을 파싱 하여 출력 하는 과제 입니다.

우선 책의 내용을 적겠습니다.

이 용어를 설명하기 위해 문자 C : = a - b를 생각 보자. 변수 a 와 b의 값들은 c의 새로운 값을 계산하기 위해 사용된다. 따라서, a와 b는 판독 세트에 속한다. c의 [예전의] 값은 문장에서 사용되지 않으며, 문장의 수행 결과에 의해 새로운 값이 설정된다. 따라서, c는 판독 세트가 아닌 기록 세트에 속한다.

R(c : = a -b) = {a,b}
W(c : = a -b) = {c}

문장 w : = c +1에 대한 판독 세트와 기록 세트는 다음과 같다.
R(w:=c+1)={c}
W(w:=c+1)={w}

R(si)와 W(si)의 교집합이 반드시 공집합일 필요는 없다. 예를 들어, 문장 x:=x+2에 대해
R(x:=x+2)=W(x:=x+2)={x}
가 된다.
또 하나의 예로써 문장 read(a)를 생각해 보자. 이 때에는 a에 입력되므로, a의 값이 변화된다. 그러므로 판독 세트와 기록 세트는
R(read(a))={}
W(read(a))={a}
가 된다.

두 개의 문장 s1과 s2가 병행하여 수행되면서도 같은 결과를 낳기 위해서는 다음의 세 가지 조건이 만족되어야 한다. 이 조건들은 Bernstein[1966]에 의해 처음 언급되어 Berstein의 조건이라고 불리워진다.
(1)R(s1)⋂W(2)={}
(2)W(s1)⋂R(2)={}
(3)W(s1)⋂W(2)={}
예를 들어, 문장 s1: a:=x+y와 s2: b:=z+1을 생각 해보자.
R(s1)={x,y}
R(s2)={z}
W(s1)={a}
W(s2)={b}
이기 때문에 위 두 문장은 병행하여 수행될수 있다. 그러나 s2는 s3: c:=a-b와 병행하여 수행될 수 없다 왜냐 하면
W(s2)⋂R(s3)={b},
이기 때문이다.

이것이 책에 있는 내용입니다. 함수적 알고리즘은 위와 같고 프로그램은 파일로 입출력을 받습니다. 출력값은 예를 들어
s1 a=3.5
s2 b=4.2
s3 c=a+b
s4 d=a+b
s5 e=c+d
출력(파일&화면)

1 input output

2 a

3 b

4 a,b c

5 c,d e

이런식으로 출력을 하는데 위에 책에 있는 것처럼 병행이 되는 것만 출력을 하고 병행이 안되는 문장이 들어가면 그냥 넘어 가고 다음 문장을 출력하게 하는 프로그램입니다.

어떻게 구현해야 할까요? 고수님 도와주시면 감사하겠습니다.

오호라의 이미지

판독세트, 기록세트란 것이 무슨 용어인지...

갑자기 김치하교수님이 떠오는건 왜인지...

어떤 책의 어떤 문제인지 알려주시면 더 쉽지 않을까요?

아무튼 [Lex & Yacc / 더그 브라운] 을 한번 흩어보시고

[ programming Languages and Methodologies / Schalkoff ] 를 보시면 원하시는 문제를 해결하실수 있을 것같네요.

ps. 두권 다 교보문고 강남점에서 팔더군요.

Hello World.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.