Talk:Transition system

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

With respect to the difference between state transition systems and finite automata, I am under the impression that nondeterministic finite automata have a transition relation rather than a transition function. This would be in contrast to the last stated difference between the two. That is, unless finite automata implicitly presupposes deterministic finite automata.

(This comment does not apply to the present state of the article. In this context, determinism and finiteness are independent properties.) Rp 12:56, 25 October 2006 (UTC)[reply]

Redirection[edit]

I came to this page when looking for "State machine", but the page I really wanted was "Finite state machine". I've stuck in a "State machine redirects here" tag, but I'm not sure what to put in the second parameter. Further editing would be appreciated!

Rosuav (talk) 22:02, 3 April 2008 (UTC)[reply]

I've changed State machine to redirect to Finite state machine. This was the case until User:Beholdtheloaf changed things a few weeks ago. An alternative target is Abstract state machine, but that doesn't seem to be a very common concept. My understanding is that Finite state machines appear in most undergraduate comp. sci. courses, whereas these other concepts may not; thus "State machine -> finite state machine" is the most widely used interpretation. I don't think its a big assumption to assume that a "machine" is finite! Moreover, I've never seen this use of terminology "state machine = labelled transition system" in the literature. Any objections, or references? If not, the extra tag can be removed. Sam Staton (talk) 07:41, 4 April 2008 (UTC)[reply]

Any difference?[edit]

  • State transition systems with a finite number of states and transitions can be represented as directed graphs.
    • Is there any difference between a state transistion system with a finite number of states and transitions and a finite state machine? --Abdull (talk) 09:28, 21 September 2008 (UTC)[reply]
Not really, as far as I can tell. Its just that authors who write about state transition systems seem to use rather radically different terminology, different notation, and seem to talk about different problems, than those who concern themselves with finite state machines. I don't know why, and while its tempting to lump them together and call them the same thing, I suspect there's history and subtle shadings I don't know of ... linas (talk) 03:15, 4 June 2011 (UTC)[reply]
The text has (since the comment was made) been changed to remove any reference to finiteness. I think it best to insert "infinite" before the link to the directed graphs, since when "stated without any qualification, a graph is usually assumed to be finite" (taken from Wikipedia's own entry for infinite graphs in Glossary of graph theory). Or maybe the text "possibly infinite", since a finite graph will suffice if the STS is actually an FSM. I think it important that the page doesn't lead people to think infinite state transition systems can be represented by finite graphs. Theenigma1983 (talk) 13:34, 16 October 2011 (UTC)[reply]

Uses and problems would be useful[edit]

If I can make a general comment, not to detract at all from what has been written already, I'm none the wiser after reading this article. I've heard of the term 'state machine' many times, but I still don't know why we need one (the problem it solves) or what it does. When do I need one? What do I use it for? And so on. For example, is it used in defining a new language (think BNR)? How a language is different to another in its internal processing (bash versus awk)? Database design? I don't know.

I find it quite helpful, for the more general parts of the content, to think of the reader as coming from a different discipline, say arts vs science. The trap otherwise is that you end up defining things to those who already know what it is.

This is a request for additional content and I mean no criticism to the contributors. maturin (talk) 00:20, 10 January 2010 (UTC)[reply]

Mismatching definition of transition system[edit]

According to Huth and Ryan: Logic in Computer Science, Definition 3.4 a transition system is a triple (S, ->, L) where L : S -> 2^Atoms is a lebelling function (also know as a Kripke structure, which is used to define the semantics of LTL). This does not match the definition given here. — Preceding unsigned comment added by Borishollas (talkcontribs) 12:36, 9 April 2014 (UTC)[reply]

Machines?[edit]

Transition systems can be infinite; they are not typically thought of as machines, but as representing the possible behavior of machines. I propose to strike the qualification as "abstract machines" from the article. Rp (talk) 09:52, 26 November 2014 (UTC)[reply]

Went ahead and did it. Rp (talk) 10:02, 26 November 2014 (UTC)[reply]

Translating code[edit]

  1. include <stdio.h>
  2. define _WIN32_WINNT 0x0500
  3. include <windows.h>
  4. include <commctrl.h>
  1. include "resource.h"

unsigned char alpha = 255;

int CALLBACK doit(HWND window, unsigned int message, WPARAM w, LPARAM l) {

 HDC device;
 HWND slider;
 PAINTSTRUCT ps;

char blurb[256];

 switch (message) {
   case WM_INITDIALOG:
     /* Set slider limits */
     slider = GetDlgItem(window, IDC_TRANSPARENCY);
     SendMessage(slider, TBM_SETRANGE, 0, (LPARAM) MAKELONG(0, 100));
     return 1;
   case WM_COMMAND:
     switch (LOWORD(w)) {
       case IDC_OK: 
         DestroyWindow(window);
         break;
     }
     return 1;
   case WM_HSCROLL:
     /* Get slider value */
     slider = GetDlgItem(window, IDC_TRANSPARENCY);
     alpha = 255 - (255 * SendMessage(slider, TBM_GETPOS, 0, 0) / 100);
   case WM_PAINT:
     /* Paint the window */
     device = BeginPaint(window, &ps);
     SetWindowLongPtr(window, GWL_EXSTYLE, GetWindowLongPtr(window, GWL_EXSTYLE) | WS_EX_LAYERED);
     SetLayeredWindowAttributes(window, 0, alpha, LWA_ALPHA);
     EndPaint(window, &ps);
     return 0;
   case WM_CLOSE:
     DestroyWindow(window);
     return 0;
   case WM_DESTROY:
     PostQuitMessage(0);
 }
 return 0;

}

int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prev, char *args, int show) {

 char blurb[256];
 /* Needed to make slider work! */
 InitCommonControls();
 HWND dlg = CreateDialog(instance, MAKEINTRESOURCE(IDD_LAYERED), 0, doit);
 if (! dlg) {
   _snprintf(blurb, sizeof(blurb), "CreateDialog() failed with error code %d", GetLastError());
   MessageBox(0, blurb, "WinMain", MB_OK);
   return 1;
 }
 /* Set previous instance */
 _snprintf(blurb, sizeof(blurb), "I: 0x%x\nP: 0x%x", instance, prev);
 SetDlgItemText(dlg, IDC_PREV, blurb);
 /* Position window at centre of screen */
 HWND desktop = GetDesktopWindow();
 RECT dlg_size, desktop_size;
 POINT pos;
 SIZE size;
 GetWindowRect(desktop, &desktop_size);
 GetWindowRect(dlg, &dlg_size);
 pos.x = (desktop_size.right - dlg_size.right) / 2;
 pos.y = (desktop_size.bottom - dlg_size.bottom) / 2;
 size.cx = dlg_size.right;
 size.cy = dlg_size.bottom;
 SetWindowPos(dlg, 0, pos.x, pos.y, size.cx, size.cy, SWP_SHOWWINDOW);
 MSG message;
 while (GetMessage(&message, 0, 0, 0)) {
   TranslateMessage(&message);
   DispatchMessage(&message);
 }
 return message.wParam;

} 24.102.145.95 (talk) 11:30, 4 March 2023 (UTC)[reply]