videos/02-algo2.srt
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 24 Oct 2025 11:26:43 +0100
changeset 1018 fd6a64c53f0e
parent 773 23cf8c6d9b94
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
1
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
00:00:06,020 --> 00:00:09,945
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
     3
Welcome back. After
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
this disappointment
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
2
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
00:00:09,945 --> 00:00:14,115
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
     8
and case of over-promising
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
     9
and under-achieving,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
3
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
00:00:14,115 --> 00:00:17,295
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    13
let's have a look whether
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
we can recover from that.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
4
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
00:00:17,295 --> 00:00:20,535
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
So here's one problem.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
5
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
00:00:20,535 --> 00:00:23,790
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    22
When we looked at this 
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    23
n-times regular expression, we
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
6
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
00:00:23,790 --> 00:00:27,330
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    27
were not able to represent
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
that directly.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    29
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    30
7
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
00:00:27,330 --> 00:00:31,275
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    32
We had to represent it as a
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    33
sequence regular expression.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    34
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    35
8
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    36
00:00:31,275 --> 00:00:32,850
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    37
So we expanded it.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    38
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    39
9
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    40
00:00:32,850 --> 00:00:36,510
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    41
So times-one would be just a,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    42
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    43
10
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    44
00:00:36,510 --> 00:00:40,595
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    45
times-two would
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    46
be a o a, and so on.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    47
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    48
11
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    49
00:00:40,595 --> 00:00:43,535
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    50
And so you can see if
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    51
you go already to 13,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    52
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    53
12
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    54
00:00:43,535 --> 00:00:47,960
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    55
n equals 13, the regular
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    56
expression becomes quite large.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    57
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    58
13
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    59
00:00:47,960 --> 00:00:52,865
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    60
And now the functions
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    61
nullable and also derivative,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    62
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    63
14
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    64
00:00:52,865 --> 00:00:56,360
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    65
they need to traverse
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    66
this regular expression.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    67
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    68
15
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    69
00:00:56,360 --> 00:00:59,060
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    70
Remember this tree, sometimes,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    71
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    72
16
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    73
00:00:59,060 --> 00:01:01,820
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    74
they have to traverse
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    75
that even several times.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    76
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    77
17
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    78
00:01:01,820 --> 00:01:04,535
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    79
So that will slow
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    80
down the algorithm.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    81
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    82
18
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    83
00:01:04,535 --> 00:01:08,150
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    84
And in particular, because
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    85
our first regular expression was
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    86
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    87
19
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    88
00:01:08,150 --> 00:01:11,840
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    89
actually not just a, but
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    90
a + 1. So we had
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    91
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    92
20
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    93
00:01:11,840 --> 00:01:14,330
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    94
in the case of 13,
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    95
we had a + 1, a + 1,...
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    96
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    97
21
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    98
00:01:14,330 --> 00:01:17,330
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
    99
a + 1... 13 times.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   100
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   101
22
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   102
00:01:17,330 --> 00:01:20,150
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   103
And this regular
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   104
expression just grows
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   105
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   106
23
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   107
00:01:20,150 --> 00:01:25,475
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   108
with the number n. Just to
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   109
show you this also in code,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   110
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   111
24
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   112
00:01:25,475 --> 00:01:28,115
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   113
I'm in the file re1.sc,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   114
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   115
25
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   116
00:01:28,115 --> 00:01:30,920
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   117
and in the end I have a size function.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   118
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   119
26
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   120
00:01:30,920 --> 00:01:33,140
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   121
The size function takes
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   122
a regular expression as
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   123
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   124
27
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   125
00:01:33,140 --> 00:01:36,215
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   126
argument and produces an integer.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   127
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   128
28
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   129
00:01:36,215 --> 00:01:39,980
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   130
And essentially it takes
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   131
this regular expression, seen as
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   132
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   133
29
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   134
00:01:39,980 --> 00:01:44,045
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   135
a tree and counts how many
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   136
nodes there are in this tree.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   137
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   138
30
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   139
00:01:44,045 --> 00:01:49,490
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   140
And so if I take this EVIL1
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   141
regular expression, this one,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   142
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   143
31
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   144
00:01:49,490 --> 00:01:52,160
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   145
and increase now this n. So you
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   146
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   147
32
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   148
00:01:52,160 --> 00:01:54,680
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   149
can already see
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   150
for n = 1,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   151
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   152
33
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   153
00:01:54,680 --> 00:01:56,540
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   154
the size of this
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   155
record expression is 5
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   156
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   157
34
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   158
00:01:56,540 --> 00:01:59,615
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   159
and you see it
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   160
slowly increases.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   161
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   162
35
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   163
00:01:59,615 --> 00:02:02,150
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   164
And this 20, i.e. n = 20,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   165
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   166
36
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   167
00:02:02,150 --> 00:02:07,100
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   168
the size of this regular
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   169
expression is now already 119.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   170
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   171
37
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   172
00:02:07,100 --> 00:02:10,145
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   173
The interesting
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   174
line is this one.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   175
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   176
38
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   177
00:02:10,145 --> 00:02:13,295
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   178
Remember, when we
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   179
built the derivative,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   180
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   181
39
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   182
00:02:13,295 --> 00:02:17,150
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   183
very often parts of a regular
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   184
expression gets copied.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   185
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   186
40
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   187
00:02:17,150 --> 00:02:19,280
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   188
So if you have like EVIL1
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   189
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   190
41
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   191
00:02:19,280 --> 00:02:22,325
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   192
of 20, and you have 119 nodes,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   193
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   194
42
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   195
00:02:22,325 --> 00:02:25,475
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   196
now this will be often copied.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   197
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   198
43
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   199
00:02:25,475 --> 00:02:31,475
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   200
And we want to see what's the
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   201
resulting tree look like, i.e.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   202
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   203
44
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   204
00:02:31,475 --> 00:02:32,780
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   205
how many nodes does it have.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   206
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   207
45
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   208
00:02:32,780 --> 00:02:34,985
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   209
So I take here EVIL1 of 20
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   210
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   211
46
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   212
00:02:34,985 --> 00:02:38,405
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   213
and the derivative
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   214
according to 20 a's.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   215
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   216
47
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   217
00:02:38,405 --> 00:02:41,820
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   218
And just have a look
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   219
what the size is.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   220
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   221
48
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   222
00:02:43,210 --> 00:02:45,680
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   223
Okay, that takes a while.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   224
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   225
49
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   226
00:02:45,680 --> 00:02:48,410
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   227
You see now this recular expression,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   228
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   229
50
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   230
00:02:48,410 --> 00:02:52,280
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   231
the derivative has already
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   232
8 million plus nodes.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   233
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   234
51
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   235
00:02:52,280 --> 00:02:55,400
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   236
And now nullable and
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   237
derivative have to
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   238
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   239
52
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   240
00:02:55,400 --> 00:02:58,430
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   241
traverse these trees with
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   242
8 million plus nodes.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   243
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   244
53
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   245
00:02:58,430 --> 00:03:01,400
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   246
So it's no wonder
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   247
that this is slow.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   248
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   249
54
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   250
00:03:01,400 --> 00:03:03,860
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   251
The first thing we
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   252
can try to mitigate
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   253
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   254
55
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   255
00:03:03,860 --> 00:03:06,350
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   256
this explosion problem is to
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   257
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   258
56
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   259
00:03:06,350 --> 00:03:09,050
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   260
have an explicit 
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   261
n-times regular expression.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   262
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   263
57
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   264
00:03:09,050 --> 00:03:11,600
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   265
So instead of expanding
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   266
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   267
58
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   268
00:03:11,600 --> 00:03:13,415
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   269
it to the sequence
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   270
regular expression,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   271
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   272
59
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   273
00:03:13,415 --> 00:03:17,510
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   274
let's just have a single
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   275
regular expression n-times,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   276
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   277
60
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   278
00:03:17,510 --> 00:03:20,540
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   279
which takes an expression and
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   280
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   281
61
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   282
00:03:20,540 --> 00:03:24,470
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   283
a number, and keeps that
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   284
regular expression small.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   285
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   286
62
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   287
00:03:24,470 --> 00:03:27,095
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   288
I'm here in the file re2.sc,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   289
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   290
63
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   291
00:03:27,095 --> 00:03:29,090
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   292
which is also on KEATS.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   293
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   294
64
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   295
00:03:29,090 --> 00:03:32,570
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   296
And the only change I made
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   297
is I added explicitly
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   298
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   299
65
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   300
00:03:32,570 --> 00:03:33,860
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   301
a regular expression for
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   302
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   303
66
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   304
00:03:33,860 --> 00:03:36,770
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   305
n-times. The optional
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   306
regular expression
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   307
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   308
67
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   309
00:03:36,770 --> 00:03:39,920
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   310
we leave out at the
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   311
moment because this a?
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   312
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   313
68
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   314
00:03:39,920 --> 00:03:41,975
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   315
is represented as
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   316
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   317
69
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   318
00:03:41,975 --> 00:03:44,645
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   319
a + 1 and doesn't
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   320
expand too much.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   321
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   322
70
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   323
00:03:44,645 --> 00:03:47,375
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   324
The real culprit
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   325
is this n-times.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   326
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   327
71
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   328
00:03:47,375 --> 00:03:51,095
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   329
And instead of expanding
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   330
it n-times, we just
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   331
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   332
72
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   333
00:03:51,095 --> 00:03:54,275
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   334
take here a regular expression
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   335
and a natural number,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   336
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   337
73
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   338
00:03:54,275 --> 00:03:56,960
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   339
which says how many times
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   340
it should be repeated.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   341
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   342
74
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   343
00:03:56,960 --> 00:03:59,165
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   344
And in this week we
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   345
can keep it small.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   346
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   347
75
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   348
00:03:59,165 --> 00:04:01,370
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   349
But by adding that
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   350
regular expression,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   351
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   352
76
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   353
00:04:01,370 --> 00:04:05,150
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   354
we now have to think about
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   355
cases for nullable and
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   356
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   357
77
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   358
00:04:05,150 --> 00:04:07,340
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   359
derivative. So that we have
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   360
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   361
78
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   362
00:04:07,340 --> 00:04:10,205
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   363
to calculate next
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   364
what they look like.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   365
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   366
79
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   367
00:04:10,205 --> 00:04:14,060
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   368
We can actually
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   369
calculate what the rule
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   370
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   371
80
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   372
00:04:14,060 --> 00:04:17,525
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   373
for nullable should be from
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   374
how we defined it earlier.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   375
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   376
81
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   377
00:04:17,525 --> 00:04:19,580
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   378
Remember, if you have
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   379
a regular expression,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   380
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   381
82
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   382
00:04:19,580 --> 00:04:21,980
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   383
r and we take it
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   384
n-times of this r,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   385
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   386
83
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   387
00:04:21,980 --> 00:04:25,220
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   388
then in case if n = 0,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   389
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   390
84
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   391
00:04:25,220 --> 00:04:28,130
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   392
we definded that as the
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   393
1 regular expression.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   394
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   395
85
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   396
00:04:28,130 --> 00:04:30,380
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   397
If n = 1,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   398
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   399
86
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   400
00:04:30,380 --> 00:04:32,495
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   401
it will be just a
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   402
single copy of r.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   403
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   404
87
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   405
00:04:32,495 --> 00:04:33,725
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   406
If n = 2,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   407
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   408
88
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   409
00:04:33,725 --> 00:04:35,270
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   410
it will be two copies in sequence.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   411
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   412
89
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   413
00:04:35,270 --> 00:04:39,260
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   414
If three, we have
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   415
three copies and so on.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   416
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   417
90
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   418
00:04:39,260 --> 00:04:41,390
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   419
Now we have to
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   420
somehow characterize
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   421
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   422
91
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   423
00:04:41,390 --> 00:04:44,285
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   424
when are these cases all nullable.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   425
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   426
92
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   427
00:04:44,285 --> 00:04:47,810
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   428
Well, if n equals 0,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   429
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   430
93
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   431
00:04:47,810 --> 00:04:49,850
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   432
then this will be defined as 1.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   433
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   434
94
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   435
00:04:49,850 --> 00:04:52,100
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   436
So 1 can match
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   437
the empty string.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   438
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   439
95
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   440
00:04:52,100 --> 00:04:54,785
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   441
So that should be
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   442
definitely true.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   443
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   444
96
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   445
00:04:54,785 --> 00:04:57,725
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   446
Okay, if n = 1,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   447
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   448
97
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   449
00:04:57,725 --> 00:05:00,470
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   450
when can this regular expression
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   451
match the empty string?
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   452
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   453
98
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   454
00:05:00,470 --> 00:05:02,000
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   455
So when should this be nullable?
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   456
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   457
99
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   458
00:05:02,000 --> 00:05:07,535
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   459
Well, if nullable of r holds,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   460
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   461
100
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   462
00:05:07,535 --> 00:05:09,860
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   463
If it can match
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   464
the empty string,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   465
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   466
101
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   467
00:05:09,860 --> 00:05:12,110
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   468
then we can match
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   469
the empty string.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   470
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   471
102
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   472
00:05:12,110 --> 00:05:14,870
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   473
When can this regular expression
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   474
match the empty string?
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   475
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   476
103
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   477
00:05:14,870 --> 00:05:16,265
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   478
So these are now two copies of r.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   479
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   480
104
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   481
00:05:16,265 --> 00:05:20,690
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   482
Well, both copies need
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   483
to match the empty string.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   484
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   485
105
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   486
00:05:20,690 --> 00:05:22,820
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   487
So again, we have to ask
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   488
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   489
106
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   490
00:05:22,820 --> 00:05:25,774
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   491
both of them need to be nullable.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   492
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   493
107
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   494
00:05:25,774 --> 00:05:28,520
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   495
Similarly, in the third case,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   496
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   497
108
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   498
00:05:28,520 --> 00:05:30,710
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   499
all three copies need to be
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   500
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   501
109
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   502
00:05:30,710 --> 00:05:33,230
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   503
able to match the empty
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   504
string. When is that the case?
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   505
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   506
110
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   507
00:05:33,230 --> 00:05:38,360
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   508
Well, if nullable of
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   509
r holds and so on.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   510
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   511
111
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   512
00:05:38,360 --> 00:05:48,754
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   513
So we can actually define that
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   514
if n = 0, then true,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   515
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   516
112
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   517
00:05:48,754 --> 00:05:56,045
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   518
else we have to ask whether
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   519
nullable of r holds.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   520
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   521
113
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   522
00:05:56,045 --> 00:05:58,550
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   523
So that will be the clause we
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   524
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   525
114
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   526
00:05:58,550 --> 00:06:01,625
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   527
have to implement for
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   528
n-times and nullable.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   529
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   530
115
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   531
00:06:01,625 --> 00:06:04,280
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   532
Deriving the definition for
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   533
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   534
116
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   535
00:06:04,280 --> 00:06:06,920
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   536
the derivative of the n-times
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   537
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   538
117
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   539
00:06:06,920 --> 00:06:10,175
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   540
regular expression
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   541
is not that easy.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   542
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   543
118
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   544
00:06:10,175 --> 00:06:12,755
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   545
We have to look again
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   546
how it was defined
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   547
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   548
119
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   549
00:06:12,755 --> 00:06:16,010
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   550
earlier and we somehow
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   551
have to spot a pattern.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   552
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   553
120
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   554
00:06:16,010 --> 00:06:18,380
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   555
Otherwise, our
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   556
algorithm will be again
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   557
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   558
121
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   559
00:06:18,380 --> 00:06:20,975
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   560
quite slow if we don't
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   561
spot that pattern.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   562
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   563
122
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   564
00:06:20,975 --> 00:06:22,550
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   565
So let's have a look.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   566
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   567
123
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   568
00:06:22,550 --> 00:06:26,240
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   569
So in the case that
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   570
n is equal to 0,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   571
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   572
124
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   573
00:06:26,240 --> 00:06:29,885
772
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   574
then r n-times was
Christian Urban <christian.urban@kcl.ac.uk>
parents: 769
diff changeset
   575
defined as just 1.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   576
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   577
125
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   578
00:06:29,885 --> 00:06:32,030
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   579
What would be the
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   580
derivative of one?
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   581
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   582
126
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   583
00:06:32,030 --> 00:06:36,140
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   584
So the derivative of c of 1
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   585
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   586
127
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   587
00:06:36,140 --> 00:06:38,990
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   588
would be defined as 0.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   589
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   590
128
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   591
00:06:38,990 --> 00:06:41,465
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   592
Okay, fair enough.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   593
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   594
129
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   595
00:06:41,465 --> 00:06:44,960
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   596
If he have n = 1,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   597
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   598
130
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   599
00:06:44,960 --> 00:06:48,125
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   600
then we just have one copy
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   601
of this regular expression.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   602
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   603
131
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   604
00:06:48,125 --> 00:06:50,120
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   605
So there's not much else we can do.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   606
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   607
132
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   608
00:06:50,120 --> 00:06:53,735
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   609
We would have to calculate
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   610
the derivative of r.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   611
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   612
133
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   613
00:06:53,735 --> 00:06:57,395
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   614
Now in the n = 2 case,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   615
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   616
134
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   617
00:06:57,395 --> 00:07:00,245
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   618
that would mean we
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   619
have two copies of r.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   620
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   621
135
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   622
00:07:00,245 --> 00:07:03,425
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   623
And they would be a sequence.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   624
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   625
136
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   626
00:07:03,425 --> 00:07:07,775
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   627
How would be the derivative c of
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   628
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   629
137
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   630
00:07:07,775 --> 00:07:10,340
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   631
r followed by r be
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   632
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   633
138
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   634
00:07:10,340 --> 00:07:13,265
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   635
defined? Well we would
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   636
look up the definition.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   637
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   638
139
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   639
00:07:13,265 --> 00:07:15,470
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   640
And it would say that's
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   641
the complicated case,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   642
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   643
140
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   644
00:07:15,470 --> 00:07:16,760
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   645
the sequence.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   646
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   647
141
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   648
00:07:16,760 --> 00:07:21,875
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   649
If nullable of r,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   650
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   651
142
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   652
00:07:21,875 --> 00:07:25,250
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   653
then the more complicated case,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   654
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   655
143
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   656
00:07:25,250 --> 00:07:28,225
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   657
else, that's the easy
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   658
case, that would be
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   659
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   660
144
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   661
00:07:28,225 --> 00:07:32,660
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   662
derivative of c of r, followed
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   663
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   664
145
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   665
00:07:32,660 --> 00:07:35,540
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   666
by r. And then I just have to copy
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   667
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   668
146
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   669
00:07:35,540 --> 00:07:40,775
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   670
that derivative of c
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   671
of r followed by r here.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   672
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   673
147
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   674
00:07:40,775 --> 00:07:43,130
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   675
But in this case I have also
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   676
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   677
148
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   678
00:07:43,130 --> 00:07:51,145
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   679
the alternative derivative
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   680
of c of r. And from that,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   681
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   682
149
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   683
00:07:51,145 --> 00:07:55,030
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   684
it looks like we can't
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   685
do much better than
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   686
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   687
150
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   688
00:07:55,030 --> 00:07:58,390
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   689
that, unless we do
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   690
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   691
151
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   692
00:07:58,390 --> 00:08:02,560
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   693
a little bit of magic and the
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   694
magic has to do with this case.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   695
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   696
152
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   697
00:08:02,560 --> 00:08:07,420
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   698
So let me look at this
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   699
case a bit more closely.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   700
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   701
153
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   702
00:08:07,420 --> 00:08:09,819
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   703
Let me go back to slides
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   704
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   705
154
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   706
00:08:09,819 --> 00:08:12,940
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   707
because actually the calculation
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   708
might be a bit hairy.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   709
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   710
155
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   711
00:08:12,940 --> 00:08:16,945
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   712
So remember we are in this
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   713
case where n equals two.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   714
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   715
156
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   716
00:08:16,945 --> 00:08:18,550
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   717
And this was defined as
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   718
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   719
157
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   720
00:08:18,550 --> 00:08:20,680
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   721
this sequence regular
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   722
expression r followed by r.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   723
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   724
158
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   725
00:08:20,680 --> 00:08:23,080
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   726
And the question was,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   727
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   728
159
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   729
00:08:23,080 --> 00:08:26,365
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   730
can we somehow make sense
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   731
out of this derivative
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   732
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   733
160
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   734
00:08:26,365 --> 00:08:30,370
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   735
where we have to build the
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   736
derivative of a sequence.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   737
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   738
161
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   739
00:08:30,370 --> 00:08:33,020
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   740
So if we just unfold the definition,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   741
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   742
162
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   743
00:08:33,020 --> 00:08:36,050
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   744
we would ask if
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   745
the r is nullable,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   746
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   747
163
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   748
00:08:36,050 --> 00:08:39,095
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   749
In this case, we return
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   750
this alternative.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   751
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   752
164
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   753
00:08:39,095 --> 00:08:40,640
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   754
And if it's not nullable,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   755
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   756
165
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   757
00:08:40,640 --> 00:08:44,135
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   758
it is just this
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   759
regular expression.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   760
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   761
166
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   762
00:08:44,135 --> 00:08:49,550
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   763
Now my claim is that
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   764
this whole if condition
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   765
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   766
167
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   767
00:08:49,550 --> 00:08:55,895
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   768
can be replaced by just this
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   769
simple derivative here.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   770
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   771
168
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   772
00:08:55,895 --> 00:08:58,775
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   773
And if that claim is correct,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   774
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   775
169
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   776
00:08:58,775 --> 00:09:01,520
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   777
there would be very nice
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   778
because in contrast to
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   779
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   780
170
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   781
00:09:01,520 --> 00:09:04,130
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   782
this if condition where
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   783
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   784
171
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   785
00:09:04,130 --> 00:09:06,280
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   786
we have to calculate
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   787
like nullable,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   788
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   789
172
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   790
00:09:06,280 --> 00:09:08,330
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   791
decide in which branch we are.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   792
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   793
173
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   794
00:09:08,330 --> 00:09:10,580
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   795
We don't have to
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   796
calculate nullable,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   797
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   798
174
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   799
00:09:10,580 --> 00:09:13,880
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   800
we can just replace
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   801
it by this expression.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   802
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   803
175
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   804
00:09:13,880 --> 00:09:16,670
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   805
So if we can
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   806
substantiate that claim,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   807
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   808
176
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   809
00:09:16,670 --> 00:09:19,860
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   810
that will be definitely
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   811
good our algorithm.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   812
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   813
177
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   814
00:09:20,140 --> 00:09:22,775
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   815
And to substantiate that,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   816
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   817
178
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   818
00:09:22,775 --> 00:09:26,795
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   819
I will focus on this
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   820
record expression here.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   821
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   822
179
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   823
00:09:26,795 --> 00:09:31,100
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   824
And notice that this record
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   825
expression will only be
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   826
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   827
180
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   828
00:09:31,100 --> 00:09:35,780
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   829
called or only be generated
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   830
if r is nullable.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   831
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   832
181
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   833
00:09:35,780 --> 00:09:38,075
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   834
So in any other case,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   835
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   836
182
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   837
00:09:38,075 --> 00:09:40,060
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   838
I will actually not go into 
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   839
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   840
183
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   841
00:09:40,060 --> 00:09:43,850
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   842
that if branch and would
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   843
be in the other one.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   844
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   845
184
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   846
00:09:43,850 --> 00:09:45,260
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   847
So if we are in this if branch,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   848
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   849
185
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   850
00:09:45,260 --> 00:09:47,705
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   851
we definitely know
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   852
that r is nullable.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   853
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   854
186
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   855
00:09:47,705 --> 00:09:52,955
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   856
Okay, so here's
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   857
our regular expression.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   858
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   859
187
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   860
00:09:52,955 --> 00:09:55,940
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   861
And we know it's nullable.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   862
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   863
188
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   864
00:09:55,940 --> 00:09:57,920
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   865
So we have to somehow find
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   866
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   867
189
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   868
00:09:57,920 --> 00:10:00,380
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   869
an equivalent expression that
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   870
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   871
190
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   872
00:10:00,380 --> 00:10:04,100
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   873
is smaller or simpler
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   874
than that one.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   875
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   876
191
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   877
00:10:04,100 --> 00:10:05,945
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   878
Let's see what we can do.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   879
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   880
192
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   881
00:10:05,945 --> 00:10:10,160
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   882
So the first thing
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   883
actually is we're multiplying
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   884
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   885
193
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   886
00:10:10,160 --> 00:10:16,595
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   887
this right hand side of the
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   888
alternative with times 1.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   889
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   890
194
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   891
00:10:16,595 --> 00:10:19,700
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   892
We can do that
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   893
because this does not
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   894
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   895
195
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   896
00:10:19,700 --> 00:10:23,090
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   897
change which strings this
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   898
regular expression can match.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   899
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   900
196
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   901
00:10:23,090 --> 00:10:25,685
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   902
Remember we even had it
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   903
as a simplification rule,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   904
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   905
197
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   906
00:10:25,685 --> 00:10:27,425
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   907
just in this case we
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   908
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   909
198
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   910
00:10:27,425 --> 00:10:29,705
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   911
don't apply it as a
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   912
simplification rule,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   913
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   914
199
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   915
00:10:29,705 --> 00:10:31,310
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   916
actually make this
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   917
regular expression
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   918
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   919
200
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   920
00:10:31,310 --> 00:10:32,720
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   921
a bit more complicated.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   922
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   923
201
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   924
00:10:32,720 --> 00:10:34,910
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   925
But times 1 doesn't make
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   926
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   927
202
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   928
00:10:34,910 --> 00:10:37,820
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   929
a difference because it
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   930
means at the end of a string,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   931
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   932
203
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   933
00:10:37,820 --> 00:10:40,070
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   934
we still want to match
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   935
the empty string.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   936
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   937
204
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   938
00:10:40,070 --> 00:10:42,155
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   939
Okay, so that is possible.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   940
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   941
205
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   942
00:10:42,155 --> 00:10:45,740
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   943
I can do that. Once
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   944
we have done that,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   945
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   946
206
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   947
00:10:45,740 --> 00:10:48,410
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   948
you will notice that this
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   949
factor derivative of
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   950
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   951
207
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   952
00:10:48,410 --> 00:10:51,860
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   953
r are exactly the
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   954
same as that one.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   955
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   956
208
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   957
00:10:51,860 --> 00:10:54,650
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   958
And in between is a plus.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   959
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   960
209
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   961
00:10:54,650 --> 00:10:57,440
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   962
So you probably remember the law
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   963
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   964
210
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   965
00:10:57,440 --> 00:11:00,170
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   966
from school math
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   967
that I can pull out
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   968
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   969
211
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   970
00:11:00,170 --> 00:11:02,735
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   971
this factor derivative of c of r.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   972
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   973
212
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   974
00:11:02,735 --> 00:11:06,320
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   975
And I'm inside the parentheses
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   976
is left with that.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   977
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   978
213
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   979
00:11:06,320 --> 00:11:09,245
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   980
So now I have r + 1.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   981
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   982
214
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   983
00:11:09,245 --> 00:11:13,055
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   984
Usually we cannot
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   985
simplify r + 1.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   986
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   987
215
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   988
00:11:13,055 --> 00:11:15,530
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   989
If it had been r + 0, then yes,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   990
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   991
216
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   992
00:11:15,530 --> 00:11:18,665
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   993
we could have got rid of the 0.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   994
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   995
217
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   996
00:11:18,665 --> 00:11:21,590
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
   997
But this + 1 often
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   998
makes a difference,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   999
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1000
218
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1001
00:11:21,590 --> 00:11:22,970
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1002
but not in our case.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1003
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1004
219
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1005
00:11:22,970 --> 00:11:25,940
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1006
Remember, we know that
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1007
this r is nullable,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1008
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1009
220
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1010
00:11:25,940 --> 00:11:29,840
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1011
so on its own can already
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1012
match the empty string.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1013
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1014
221
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1015
00:11:29,840 --> 00:11:33,305
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1016
So we don't really need this
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1017
alternative plus one there,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1018
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1019
222
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1020
00:11:33,305 --> 00:11:35,300
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1021
so we can just get rid of that.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1022
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1023
223
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1024
00:11:35,300 --> 00:11:37,070
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1025
Okay, and so now we have
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1026
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1027
224
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1028
00:11:37,070 --> 00:11:40,535
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1029
a much simpler equivalent
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1030
regular expression.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1031
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1032
225
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1033
00:11:40,535 --> 00:11:44,285
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1034
And this actually helps a
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1035
lot for our if-condition.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1036
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1037
226
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1038
00:11:44,285 --> 00:11:46,925
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1039
Look, this was the
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1040
original if-condition
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1041
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1042
227
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1043
00:11:46,925 --> 00:11:50,270
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1044
and this is the regular expression
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1045
we just simplified.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1046
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1047
228
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1048
00:11:50,270 --> 00:11:53,105
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1049
If we replace it with this one,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1050
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1051
229
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1052
00:11:53,105 --> 00:11:56,090
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1053
then we just end up with this.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1054
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1055
230
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1056
00:11:56,090 --> 00:11:59,510
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1057
And now you will see that
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1058
the if condition is actually
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1059
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1060
231
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1061
00:11:59,510 --> 00:12:02,750
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1062
pointless because you
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1063
check if it's nullable,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1064
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1065
232
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1066
00:12:02,750 --> 00:12:05,060
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1067
we return this regular
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1068
expression or it's
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1069
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1070
233
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1071
00:12:05,060 --> 00:12:08,210
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1072
not nullable and we
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1073
return exactly the same.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1074
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1075
234
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1076
00:12:08,210 --> 00:12:10,025
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1077
That doesn't make any difference.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1078
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1079
235
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1080
00:12:10,025 --> 00:12:11,750
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1081
So we can just get rid of
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1082
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1083
236
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1084
00:12:11,750 --> 00:12:14,645
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1085
that one and can
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1086
replace it by that.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1087
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1088
237
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1089
00:12:14,645 --> 00:12:16,865
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1090
And you see, this is now
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1091
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1092
238
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1093
00:12:16,865 --> 00:12:20,720
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1094
a much simpler case than
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1095
what we had before.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1096
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1097
239
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1098
00:12:20,720 --> 00:12:24,170
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1099
So let's take stock
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1100
what we have so far.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1101
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1102
240
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1103
00:12:24,170 --> 00:12:26,915
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1104
So we know in the 0-case,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1105
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1106
241
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1107
00:12:26,915 --> 00:12:30,920
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1108
the derivative needs
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1109
to be defined as 0.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1110
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1111
242
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1112
00:12:30,920 --> 00:12:33,095
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1113
Because we define this
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1114
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1115
243
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1116
00:12:33,095 --> 00:12:36,785
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1117
n-times as one,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1118
the derivative is 0.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1119
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1120
244
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1121
00:12:36,785 --> 00:12:39,889
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1122
For just r, this will
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1123
be the derivative.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1124
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1125
245
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1126
00:12:39,889 --> 00:12:42,170
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1127
And we can't do any
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1128
better than that.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1129
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1130
246
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1131
00:12:42,170 --> 00:12:45,620
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1132
For r followed by r, as we
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1133
just found out
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1134
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1135
247
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1136
00:12:45,620 --> 00:12:47,270
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1137
actually it is quite simple
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1138
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1139
248
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1140
00:12:47,270 --> 00:12:51,410
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1141
regular expression is equivalent
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1142
to the derivative.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1143
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1144
249
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1145
00:12:51,410 --> 00:12:53,870
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1146
Now, we have to continue with
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1147
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1148
250
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1149
00:12:53,870 --> 00:12:56,090
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1150
that case where n is
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1151
equal to three and we
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1152
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1153
251
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1154
00:12:56,090 --> 00:12:58,099
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1155
now have three copies
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1156
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1157
252
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1158
00:12:58,099 --> 00:13:02,390
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1159
of this r. What should
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1160
be the derivative?
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1161
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1162
253
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1163
00:13:02,390 --> 00:13:05,330
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1164
Well, if you look very carefully
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1165
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1166
254
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1167
00:13:05,330 --> 00:13:08,465
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1168
at this emerging pattern,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1169
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1170
255
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1171
00:13:08,465 --> 00:13:12,410
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1172
I have to say then
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1173
what would be nice if,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1174
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1175
256
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1176
00:13:12,410 --> 00:13:16,400
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1177
if he could show that in
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1178
the n equals three case,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1179
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1180
257
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1181
00:13:16,400 --> 00:13:18,275
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1182
we end up with this.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1183
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1184
258
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1185
00:13:18,275 --> 00:13:21,290
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1186
Because then what we have is this.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1187
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1188
259
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1189
00:13:21,290 --> 00:13:25,370
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1190
We can define our
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1191
nullable for n-times
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1192
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1193
260
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1194
00:13:25,370 --> 00:13:31,025
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1195
as if n = 0 then
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1196
true, else nullable r.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1197
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1198
261
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1199
00:13:31,025 --> 00:13:33,875
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1200
And for the derivative,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1201
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1202
262
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1203
00:13:33,875 --> 00:13:37,190
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1204
we can save if n is equal to 0,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1205
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1206
263
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1207
00:13:37,190 --> 00:13:40,235
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1208
then we return the
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1209
0 regular expression.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1210
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1211
264
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1212
00:13:40,235 --> 00:13:43,295
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1213
Otherwise, as you can see
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1214
from this pattern here,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1215
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1216
265
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1217
00:13:43,295 --> 00:13:50,735
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1218
it would be derivative of
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1219
c r followed by r{n-1}.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1220
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1221
266
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1222
00:13:50,735 --> 00:13:54,770
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1223
Okay? And the only
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1224
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1225
267
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1226
00:13:54,770 --> 00:13:56,330
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1227
thing we have to make csure is that
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1228
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1229
268
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1230
00:13:56,330 --> 00:13:58,175
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1231
this pattern actually holds.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1232
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1233
269
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1234
00:13:58,175 --> 00:14:00,470
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1235
So that's, I will
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1236
show you next in
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1237
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1238
270
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1239
00:14:00,470 --> 00:14:03,735
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1240
the case for n equals three.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1241
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1242
271
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1243
00:14:03,735 --> 00:14:07,810
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1244
If we have a regular expression r
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1245
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1246
272
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1247
00:14:07,810 --> 00:14:09,820
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1248
and it's followed
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1249
by r and another r,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1250
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1251
273
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1252
00:14:09,820 --> 00:14:11,275
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1253
three copies of it.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1254
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1255
274
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1256
00:14:11,275 --> 00:14:14,245
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1257
We can just unfold
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1258
again the definition.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1259
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1260
275
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1261
00:14:14,245 --> 00:14:16,930
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1262
So we would ask if r is nullable,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1263
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1264
276
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1265
00:14:16,930 --> 00:14:19,765
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1266
then we have this if branch.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1267
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1268
277
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1269
00:14:19,765 --> 00:14:23,905
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1270
And if r is not nullable,
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1271
we have this else branch.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1272
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1273
278
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1274
00:14:23,905 --> 00:14:27,010
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1275
Okay? What can we do here?
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1276
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1277
279
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1278
00:14:27,010 --> 00:14:30,310
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1279
Well, we notice that
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1280
this one is just now
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1281
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1282
280
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1283
00:14:30,310 --> 00:14:34,510
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1284
the derivative of two
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1285
r's, one after another.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1286
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1287
281
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1288
00:14:34,510 --> 00:14:37,330
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1289
But this we just
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1290
calculated a moment ago,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1291
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1292
282
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1293
00:14:37,330 --> 00:14:40,120
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1294
so we can just
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1295
replace it by this.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1296
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1297
283
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1298
00:14:40,120 --> 00:14:43,255
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1299
Ok. That's what we
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1300
calculated earlier.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1301
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1302
284
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1303
00:14:43,255 --> 00:14:46,665
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1304
But now you will see
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1305
again this factor,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1306
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1307
285
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1308
00:14:46,665 --> 00:14:48,695
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1309
and this factor is the same.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1310
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1311
286
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1312
00:14:48,695 --> 00:14:52,700
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1313
So I can pull that
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1314
out to be like that.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1315
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1316
287
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1317
00:14:52,700 --> 00:14:57,380
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1318
And I have now r followed
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1319
by r plus r. 
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1320
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1321
288
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1322
00:14:57,380 --> 00:14:59,030
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1323
But now you probably
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1324
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1325
289
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1326
00:14:59,030 --> 00:15:00,680
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1327
remember how we did it earlier.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1328
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1329
290
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1330
00:15:00,680 --> 00:15:03,080
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1331
We can now pull out one copy of
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1332
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1333
291
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1334
00:15:03,080 --> 00:15:06,020
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1335
this are to just get
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1336
something like this.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1337
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1338
292
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1339
00:15:06,020 --> 00:15:08,765
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1340
We have to add one essentially,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1341
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1342
293
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1343
00:15:08,765 --> 00:15:11,615
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1344
but we now get r plus one.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1345
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1346
294
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1347
00:15:11,615 --> 00:15:15,065
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1348
And this r here is
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1349
now just pulled out.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1350
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1351
295
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1352
00:15:15,065 --> 00:15:18,995
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1353
Well, here again kicks
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1354
in this reasoning.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1355
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1356
296
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1357
00:15:18,995 --> 00:15:22,700
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1358
We go in this if branch
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1359
only if r is nullable.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1360
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1361
297
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1362
00:15:22,700 --> 00:15:26,150
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1363
So r on its own can already
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1364
match the empty string.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1365
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1366
298
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1367
00:15:26,150 --> 00:15:28,895
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1368
So I don't need
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1369
really this plus one.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1370
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1371
299
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1372
00:15:28,895 --> 00:15:30,695
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1373
I can just get rid of it.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1374
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1375
300
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1376
00:15:30,695 --> 00:15:33,140
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1377
And so I now just have
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1378
to rearrange the parentheses
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1379
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1380
301
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1381
00:15:33,140 --> 00:15:35,450
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1382
which we said we can also do.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1383
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1384
302
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1385
00:15:35,450 --> 00:15:37,595
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1386
So we have something like that.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1387
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1388
303
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1389
00:15:37,595 --> 00:15:39,740
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1390
And here again, the
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1391
same reasoning,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1392
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1393
304
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1394
00:15:39,740 --> 00:15:41,975
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1395
we have an if condition
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1396
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1397
305
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1398
00:15:41,975 --> 00:15:43,310
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1399
where it doesn't
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1400
really matter what
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1401
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1402
306
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1403
00:15:43,310 --> 00:15:44,405
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1404
we're going to return,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1405
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1406
307
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1407
00:15:44,405 --> 00:15:46,205
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1408
it's in both branches the same.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1409
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1410
308
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1411
00:15:46,205 --> 00:15:48,470
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1412
So we can just
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1413
replace it by that.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1414
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1415
309
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1416
00:15:48,470 --> 00:15:51,920
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1417
And yes, now we can be
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1418
pretty sure they'll
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1419
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1420
310
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1421
00:15:51,920 --> 00:15:55,310
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1422
work for all the n-times
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1423
regular expressions.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1424
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1425
311
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1426
00:15:55,310 --> 00:15:57,860
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1427
And I leave 
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1428
the calculation for
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1429
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1430
312
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1431
00:15:57,860 --> 00:16:02,570
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1432
maybe r to the four to you.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1433
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1434
313
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1435
00:16:02,570 --> 00:16:04,490
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1436
And the reason why I do it
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1437
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1438
314
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1439
00:16:04,490 --> 00:16:06,605
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1440
in such a detail,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1441
this calculation,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1442
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1443
315
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1444
00:16:06,605 --> 00:16:08,960
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1445
this is really meant
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1446
to help you with
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1447
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1448
316
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1449
00:16:08,960 --> 00:16:13,200
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1450
the coursework which is
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1451
coming up this week.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1452
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1453
317
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1454
00:16:13,210 --> 00:16:16,250
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1455
I'm now back in our
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1456
implementation.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1457
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1458
318
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1459
00:16:16,250 --> 00:16:20,660
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1460
In this re2.sc, we said we have
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1461
this explicit constructor 
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1462
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1463
319
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1464
00:16:20,660 --> 00:16:25,535
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1465
for n-times. We can now fill
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1466
in the cases for nullable.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1467
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1468
320
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1469
00:16:25,535 --> 00:16:27,635
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1470
So if we have r n-times,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1471
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1472
321
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1473
00:16:27,635 --> 00:16:30,995
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1474
if this n is equal to
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1475
0, we return true.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1476
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1477
322
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1478
00:16:30,995 --> 00:16:34,190
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1479
Otherwise we have to test
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1480
whether r is nullable.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1481
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1482
323
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1483
00:16:34,190 --> 00:16:37,565
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1484
And in the derivative case, 
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1485
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1486
324
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1487
00:16:37,565 --> 00:16:40,339
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1488
if this n is equal to 0,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1489
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1490
325
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1491
00:16:40,339 --> 00:16:43,564
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1492
the return this 0
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1493
regular expression.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1494
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1495
326
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1496
00:16:43,564 --> 00:16:46,700
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1497
Otherwise we return the
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1498
sequence of the derivative
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1499
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1500
327
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1501
00:16:46,700 --> 00:16:50,270
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1502
of c of r followed by n times of r,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1503
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1504
328
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1505
00:16:50,270 --> 00:16:54,545
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1506
but n minus one times, and
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1507
everything else stays the same.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1508
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1509
329
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1510
00:16:54,545 --> 00:16:56,510
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1511
Here's the function for strings,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1512
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1513
330
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1514
00:16:56,510 --> 00:16:58,430
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1515
derivative function for strings.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1516
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1517
331
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1518
00:16:58,430 --> 00:17:01,595
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1519
In the main matcher
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1520
function is all the same.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1521
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1522
332
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1523
00:17:01,595 --> 00:17:04,820
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1524
We still require this
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1525
definition because
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1526
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1527
333
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1528
00:17:04,820 --> 00:17:06,050
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1529
we haven't done anything about
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1530
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1531
334
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1532
00:17:06,050 --> 00:17:08,090
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1533
the optional regular
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1534
expression yet.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1535
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1536
335
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1537
00:17:08,090 --> 00:17:10,670
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1538
And we have now this
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1539
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1540
336
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1541
00:17:10,670 --> 00:17:13,250
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1542
EVIL1 and EVIL2
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1543
regular expression.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1544
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1545
337
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1546
00:17:13,250 --> 00:17:15,290
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1547
And let's test it. And let's be
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1548
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1549
338
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1550
00:17:15,290 --> 00:17:17,000
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1551
a bit more ambitious.
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1552
We're testing it with
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1553
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1554
339
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1555
00:17:17,000 --> 00:17:20,315
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1556
strings between 0 and 1000
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1557
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1558
340
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1559
00:17:20,315 --> 00:17:22,580
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1560
and let's see what the time say.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1561
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1562
341
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1563
00:17:22,580 --> 00:17:26,210
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1564
I'm testing this again
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1565
inside the Ammonite REPL.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1566
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1567
342
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1568
00:17:26,210 --> 00:17:30,180
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1569
And you'll see it should
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1570
be now much quicker.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1571
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1572
343
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1573
00:17:30,610 --> 00:17:34,640
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1574
Okay, it might slow
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1575
down also around 600.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1576
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1577
344
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1578
00:17:34,640 --> 00:17:40,490
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1579
700 needs two seconds,
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1580
three seconds for 800.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1581
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1582
345
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1583
00:17:40,490 --> 00:17:43,940
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1584
Let's see what it
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1585
needs for one thousand?
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1586
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1587
346
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1588
00:17:43,940 --> 00:17:47,435
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1589
But you have to remember
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1590
Ruby and Python
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1591
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1592
347
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1593
00:17:47,435 --> 00:17:51,530
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1594
needed half a
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1595
minute for just 30 a's.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1596
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1597
348
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1598
00:17:51,530 --> 00:17:54,485
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1599
We need a little bit
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1600
more than six seconds,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1601
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1602
349
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1603
00:17:54,485 --> 00:17:57,110
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1604
but we are processing a string of
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1605
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1606
350
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1607
00:17:57,110 --> 00:18:00,575
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1608
1000 a's. So that success.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1609
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1610
351
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1611
00:18:00,575 --> 00:18:04,775
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1612
This speed is also explained
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1613
if you look at the sizes.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1614
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1615
352
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1616
00:18:04,775 --> 00:18:08,975
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1617
Since we now have this explicit
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1618
n-times constructor,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1619
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1620
353
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1621
00:18:08,975 --> 00:18:11,930
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1622
it doesn't really matter
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1623
how big this n is.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1624
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1625
354
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1626
00:18:11,930 --> 00:18:14,540
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1627
This EVIL1 regular
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1628
expression will always be
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1629
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1630
355
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1631
00:18:14,540 --> 00:18:17,195
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1632
of this size seven, at
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1633
the beginning.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1634
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1635
356
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1636
00:18:17,195 --> 00:18:20,315
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1637
And you can also see if you
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1638
now build the derivatives,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1639
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1640
357
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1641
00:18:20,315 --> 00:18:22,550
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1642
they still grow in size,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1643
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1644
358
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1645
00:18:22,550 --> 00:18:24,740
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1646
but much more moderately.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1647
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1648
359
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1649
00:18:24,740 --> 00:18:28,100
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1650
And let's try out this
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1651
example with 20 a's.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1652
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1653
360
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1654
00:18:28,100 --> 00:18:31,685
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1655
So we build the derivative
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1656
according to 20 character a's.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1657
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1658
361
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1659
00:18:31,685 --> 00:18:33,890
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1660
In the earlier example,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1661
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1662
362
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1663
00:18:33,890 --> 00:18:35,780
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1664
we ended up with a
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1665
regular expression that
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1666
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1667
363
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1668
00:18:35,780 --> 00:18:37,895
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1669
had like 8 million plus nodes.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1670
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1671
364
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1672
00:18:37,895 --> 00:18:39,830
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1673
And if we do this now,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1674
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1675
365
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1676
00:18:39,830 --> 00:18:43,205
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1677
then we just have a regular
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1678
expression with 211 nodes.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1679
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1680
366
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1681
00:18:43,205 --> 00:18:44,750
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1682
And that is much smaller and
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1683
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1684
367
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1685
00:18:44,750 --> 00:18:47,165
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1686
all the calculations
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1687
would be much quicker.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1688
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1689
368
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1690
00:18:47,165 --> 00:18:49,550
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1691
So yeah, the Brzozowski
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1692
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1693
369
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1694
00:18:49,550 --> 00:18:52,205
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1695
algorithm
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1696
and with this improvement,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1697
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1698
370
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1699
00:18:52,205 --> 00:18:54,890
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1700
we're now running
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1701
circles around Ruby and
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1702
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1703
371
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1704
00:18:54,890 --> 00:18:58,445
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1705
Python because they're just
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1706
stuck here at the beginning.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1707
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1708
372
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1709
00:18:58,445 --> 00:19:00,230
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1710
Because they need already
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1711
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1712
373
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1713
00:19:00,230 --> 00:19:02,975
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1714
like half a minute
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1715
for just 30 a's.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1716
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1717
374
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1718
00:19:02,975 --> 00:19:05,930
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1719
We now can do something
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1720
like thousand a's
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1721
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1722
375
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1723
00:19:05,930 --> 00:19:07,580
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1724
in a reasonable time.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1725
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1726
376
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1727
00:19:07,580 --> 00:19:09,740
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1728
I think this must be
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1729
timing I obtained with
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1730
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1731
377
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1732
00:19:09,740 --> 00:19:12,635
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1733
my older laptop some time ago.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1734
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1735
378
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1736
00:19:12,635 --> 00:19:14,210
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1737
Because remember we
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1738
had something like
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1739
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1740
379
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1741
00:19:14,210 --> 00:19:16,670
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1742
six seconds. Here it says 15.
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1743
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1744
380
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1745
00:19:16,670 --> 00:19:18,080
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1746
You always have to take
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1747
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1748
381
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1749
00:19:18,080 --> 00:19:20,885
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1750
these times with
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1751
the pinch of salt.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1752
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1753
382
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1754
00:19:20,885 --> 00:19:22,670
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1755
It's essentially only the trend,
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1756
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1757
383
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1758
00:19:22,670 --> 00:19:25,100
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1759
but it's clear we are
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1760
much, much better.
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1761
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1762
384
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1763
00:19:25,100 --> 00:19:27,065
773
23cf8c6d9b94 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 772
diff changeset
  1764
We have worked a lot,
769
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1765
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1766
385
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1767
00:19:27,065 --> 00:19:30,720
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1768
but we also got something
b153de5339bc updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
  1769
for it in return.