Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Relevanta dokument
Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201) + Del omtenta i PK/PK1/PK2/PM1/AD1

Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Övning 3 - Tillämpad datalogi 2012

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Isometries of the plane

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

8 < x 1 + x 2 x 3 = 1, x 1 +2x 2 + x 4 = 0, x 1 +2x 3 + x 4 = 2. x 1 2x 12 1A är inverterbar, och bestäm i så fall dess invers.

Pre-Test 1: M0030M - Linear Algebra.

Tentamen i Matematik 2: M0030M.

Styrteknik: Binära tal, talsystem och koder D3:1

Tentamen 1 (6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Graphs (chapter 14) 1

Module 1: Functions, Limits, Continuity

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Högskolan i Skövde (SK, JS) Svensk version Tentamen i matematik

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Webbregistrering pa kurs och termin

12.6 Heat equation, Wave equation

Algoritmer och datastrukturer

Kurskod: TAMS28 MATEMATISK STATISTIK Provkod: TEN1 05 June 2017, 14:00-18:00. English Version

Beijer Electronics AB 2000, MA00336A,

F ξ (x) = f(y, x)dydx = 1. We say that a random variable ξ has a distribution F (x), if. F (x) =

Föreläsning Datastrukturer (DAT036)

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Webbreg öppen: 26/ /

This exam consists of four problems. The maximum sum of points is 20. The marks 3, 4 and 5 require a minimum

Tentamen MMG610 Diskret Matematik, GU

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

Isolda Purchase - EDI

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Adding active and blended learning to an introductory mechanics course

Förskola i Bromma- Examensarbete. Henrik Westling. Supervisor. Examiner

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

Tentamen i Matematik 2: M0030M.

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Specifikationer för tabellfunktionerna. Operationer på tabellen

6. a) Visa att följande vektorer är egenvektorer till matrisen A = , och ange motsvarande

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Kurskod: TAMS11 Provkod: TENB 07 April 2015, 14:00-18:00. English Version

BOENDEFORMENS BETYDELSE FÖR ASYLSÖKANDES INTEGRATION Lina Sandström

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Support Manual HoistLocatel Electronic Locks

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

LUNDS TEKNISKA HÖGSKOLA Inst. for Elektro- och Informationsteknik. SIGNALBEHANDLING I MULTIMEDIA, ETI265 Inlämningsuppgift 1 (av 2), Task 1 (out of 2)

Materialplanering och styrning på grundnivå. 7,5 högskolepoäng

Kurskod: TAMS11 Provkod: TENB 28 August 2014, 08:00-12:00. English Version

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Module 6: Integrals and applications

Hur fattar samhället beslut när forskarna är oeniga?

Calculate check digits according to the modulus-11 method

Kurskod: TAIU06 MATEMATISK STATISTIK Provkod: TENA 15 August 2016, 8:00-12:00. English Version

Discovering!!!!! Swedish ÅÄÖ. EPISODE 6 Norrlänningar and numbers Misi.se

Tentamen Datastrukturer (DAT036)

(D1.1) 1. (3p) Bestäm ekvationer i ett xyz-koordinatsystem för planet som innehåller punkterna

x 2 2(x + 2), f(x) = by utilizing the guidance given by asymptotes and stationary points. γ : 8xy x 2 y 3 = 12 x + 3

Theory 1. Summer Term 2010

2.1 Installation of driver using Internet Installation of driver from disk... 3

Rastercell. Digital Rastrering. AM & FM Raster. Rastercell. AM & FM Raster. Sasan Gooran (VT 2007) Rastrering. Rastercell. Konventionellt, AM

Programkonstruktion. Tentamen,

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Annonsformat desktop. Startsida / områdesstartsidor. Artikel/nyhets-sidor. 1. Toppbanner, format 1050x180 pxl. Format 1060x180 px + 250x240 pxl.

Föreläsning Datastrukturer (DAT037)

Kurskod: TAIU06 MATEMATISK STATISTIK Provkod: TENA 31 May 2016, 8:00-12:00. English Version

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

Föreläsning Datastrukturer (DAT036)

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

PORTSECURITY IN SÖLVESBORG

Hjälpmedel: Inga, inte ens miniräknare Göteborgs Universitet Datum: 2018 kl Telefonvakt: Jonatan Kallus Telefon: ankn 5325

Grafisk teknik IMCDP IMCDP IMCDP. IMCDP(filter) Sasan Gooran (HT 2006) Assumptions:

Resultat av den utökade första planeringsövningen inför RRC september 2005

Writing with context. Att skriva med sammanhang

Tentamen Grundläggande programmering

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

and u = och x + y z 2w = 3 (a) Finn alla lösningar till ekvationssystemet

Uttagning för D21E och H21E

Accomodations at Anfasteröd Gårdsvik, Ljungskile

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

Kurskod: TAMS11 Provkod: TENB 12 January 2015, 08:00-12:00. English Version

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Föreläsning 7 Datastrukturer (DAT037)

Tentamen i Matematik 3: M0031M.

Övningsuppgifter #11, Programkonstruktion och datastrukturer

Blockkedjor. en introduktion för datavetare. Rikard Hjort, 24 maj 2019

S 1 11, S 2 9 and S 1 + 2S 2 32 E S 1 11, S 2 9 and 33 S 1 + 2S 2 41 D S 1 11, S 2 9 and 42 S 1 + 2S 2 51 C 52 S 1 + 2S 2 60 B 61 S 1 + 2S 2 A

WindPRO version feb SHADOW - Main Result. Calculation: inkl Halmstad SWT 2.3. Assumptions for shadow calculations. Shadow receptor-input

VHDL Basics. Component model Code model Entity Architecture Identifiers and objects Operations for relations. Bengt Oelmann -- copyright

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Solutions to exam in SF1811 Optimization, June 3, 2014

Sätt att skriva ut binärträd

Exempelsamling Assemblerprogrammering

c = s[2]; /* move chars around */ p = &s[2]; *p = *(p-1); --p; *p = *(p-1); s[0] = c; printf("%s\n",s); /* print the string */ English version


TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Transkript:

Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201) Pierre Flener Onsdag 14 mars 2012, kl. 14:00 17:00, i Bergsbrunnagatan 15, sal 1 Hjälpmedel: Inga. Inte heller elektronisk utrustning. Hjälp: En av huvudlärarna kommer normalt att besöka skrivsalen c:a klockan 15:00. Anvisningar: Markera i tabellen nedan inte mer än ett svar per fråga genom att kryssa över bokstaven för det svarsalternativ som du väljer. Lämna bara in denna sida. Det är inte meningen att du skall lämna kommentarer till dina svar. Om du tycker att någon fråga är oklar eller felaktig, markera fråganumret med en på den här sidan, och förklara på baksidan av detta blad vad du menar att problemet är och vilka antaganden du gjort för att kunna svara på frågan. betyg 3 U betyg 4 betyg 5 Fråga Svar Fråga Svar 1 A B C D E 2 A B C D E 3 A B C D E 4 A B C D E 5 A B C D E 6 A B C D E 7 A B C D E 8 A B C D E 9 A B C D E 10 A B C D E 11 A B C D E 12 A B C D E 13 A B C D E 14 A B C D E 15 A B C D E 16 A B C D E 17 A B C D E 18 A B C D E 19 A B C D E 20 A B C D E Identitet: Din tentakod (eller namn och personnummer om du saknar kod):......................................................

Frågor för betyg 3 Om du ger rätt svar på 7 av de 10 frågorna i detta avsnitt så blir du godkänd med minst betyg 3, annars blir du underkänd (U). Du kan inte kompensera ett dåligt resultat i detta avsnitt med poäng från frågorna för betyg 4 eller 5. 1. Här följer ett fragment av en abstrakt datatyp för tabeller (implementerade som listor som vi talat om i kursen) och några funktioner som använder tabellerna. Programraderna är numrerade. 1 abstype a table = Table of (string* a) list 2 with 3 val empty =...; 4 fun tolist(table T) = T; 5 fun insert(table [], key, value) = Table [(key,value)] 6 insert(table ((key,value )::rest), key, value) = 7 if key = key then 8 Table((key,value)::rest) 9 else 10 Table((key,value )::tolist(insert(table rest,key,value))); 11 fun exists(...) =...; 12 fun search (...) =...; 13 fun delete (...) =... 14 end; 15 fun countup(t,k) = 16 if exists(t,k) then 17 insert(t,k,search(t,k)+1) 18 else 19 Table ((k,1)::tolist T); 20 fun countdown(t,k) = 21 case search(t,k) of 22 1 => delete(t,k) 23 n => insert(t,k,n-1); En av raderna i programmet är felaktig (i den meningen att programmet inte går att köra) genom att använda datastrukturen på ett felaktigt sätt. Vilken? (Tips: Programlogiken som sådan är korrekt. Du behöver alltså inte förstå vad programmet gör eller hur det fungerar.) (A) 4 (B) 10 (C) 17 (D) 19 (E) 23 Justification: Konstruktorn Table får inte användas utanför den abstrakta datatypen.

2. Titta på denna funktionsdefinition: fun klingsor(kundry,[amfortas])=amfortas klingsor(kundry,titurel::gurnemanz)= kundry(titurel,klingsor(kundry,gurnemanz)) Vad är värdet av uttrycket klingsor(op -,[1,2,3])? (A) 2 (B) 0 (C) 2 (D) 4 (E) 6 Justification: Anropen av klingsor ger uttrycket op -(1, op -(2, 3)), som beräknas till 1 (2 3) = 2. 3. Man matar i tur och ordning in följande deklarationer & uttryck till ett ML-system: val x = ref 7; fun bump(x) = (x :=!x-1); x := 11; bump(x);!x; Vad blir värdet av det sista uttrycket!x? (A) 5 (B) 6 (C) 7 (D) 10 (E) 11 Justification: Definitionen av bump påverkar inte x. x sätts till 11, sedan anropas bump som sätter x till 10. 4. What is a tight asymptotic bound on the runtime of the function h below? Let n be the number of elements of its list argument. Assume that the infix function # always takes time linear in the number of elements of its right argument. Assume that the input and output of function h always have the same length (this assumption was unfortunately missing in the version handed out at the exam, but it was announced during the exam; for those who answered this question wrong, the threshold on this part of the exam was lowered from 10 to 9). fun h([ ]) = [ ] h([x]) = [x] h(x1::x2::xs) = [x1,x2] # h(xs) (A) Θ(n) (B) Θ(n lg n) (C) Θ(n 2 ) (D) Θ(n 3 ) (E) Another bound Justification: By induction. 5. After performing the insertions of the keys 9, 5, 1, 3, 0, 4, in that order, into the initially empty red-black tree using the algorithm seen in the course, what is the number of black nodes in the resulting red-black tree? (A) 1 (B) 2 (C) 3 (D) 4 (E) 5 Justification: The resulting red-black tree is RBT (Black, RBT (Red, RBT (Black, RBT (Red, Void, 0, Void), 1, Void), 3, RBT (Black, Void, 4, Void)), 5, RBT (Black, Void, 9, Void)).

6. After performing the insertions of the keys 9, 5, 1, 3, 0, 4, in that order, into the initially empty binomial max -heap using the algorithm seen in the course, what is the rank of the binomial tree containing the node with key 4 in the resulting binomial heap? (A) 0 (B) 1 (C) 2 (D) 3 (E) 4 Justification: The resulting heap is [4(0), 9(3(1), 5)]. 7. Which of the following statements on hashing under chaining are false? (a) The maximum chain length grows on average in proportion to the load factor. (b) The average chain length grows on average in proportion to the load factor. (c) A hash table of m cells can store strictly more than m elements. (A) none (B) (a) only (C) (a) & (b) only (D) (b) only (E) all Justification: In the average case, the maximum chain length grows slower than the load factor. 8. Consider the hash table below of m = 7 cells, where denotes the element at a cell that was never used and denotes a deleted element: 0 1 2 3 4 5 6 11 25 Consider the ordinary hash function hash (key) = the rightmost digit of key under open addressing with the linear probing function f(i) = i. Perform no rehashing. Assume that duplicate keys are not allowed. What is the number of probes made (that is, the number of values of i tried) when inserting 42? (A) 1 (B) 2 (C) 3 (D) 4 (E) 5 Justification: Key 42 goes into cell 2 upon 2 probes, at indices 2+0 = 2, 2+1 = 3 for i = 0, 1, because under the given assumption we must probe beyond the in order to make sure no 42 exists yet in the table. Red herring: The no-rehashing directive is irrelevant since there is space for another element.

9. Alfons needs to be careful when getting dressed in the mornings. Each edge from node u to node v in the acyclic directed graph below means that clothing item u must be put on before clothing item v: Assume the graph is represented as an array of adjacency lists. Assume the array is indexed by decreasing alphabetic order on the node names. Assume each adjacency list is sorted by decreasing alphabetic order on the node names. What is the topological sorting order of the nodes, using the algorithm based on depth-first search (DFS) seen in the course? (A) shirt, socks, tie, undershorts, pants, belt, jacket, shoes (B) shirt, socks, tie, undershorts, pants, shoes, belt, jacket (C) socks, undershorts, pants, shoes, shirt, belt, tie, jacket (D) undershorts, socks, shirt, tie, pants, shoes, belt, jacket (E) Another order Justification: By the DFS-based topological sort algorithm. 10. Reconsider the graph and its representation assumptions of Question 9. What is the breadth-first search (BFS) order of this graph when starting from the undershorts and not making any restarts, using the algorithm seen in the course? (A) undershorts, pants, belt, jacket, shoes (B) undershorts, pants, belt, shoes, jacket (C) undershorts, pants, shoes, belt, jacket (D) undershorts, pants, shoes, belt, shoes, jacket (E) undershorts, shoes, pants, belt, jacket Justification: By the BFS algorithm.

Frågor för betyg 4 Om du fått minst betyg 3 genom dina svar på de föregående frågorna och dessutom svarar rätt på minst 3 av de 5 frågorna i detta avsnitt så blir du godkänd med minst betyget 4. Du kan inte kompensera ett dåligt resultat i detta avsnitt med poäng från frågorna för betyg 3 eller 5. 11. Vilket av dessa påståenden stämmer i princip inte in på abstrakta datatyper? (A) Dataabstraktion innebär att man döljer datarepresentationen. (B) För att förstå hur man använder en abstrakt datatyp räcker det med att förstå hur dess gränssnitt fungerar. (C) Om man ändrar datarepresentationen i en abstrakt datatyp så måste man i allmänhet också göra ändringar i övriga delar av programmet. (D) En abstrakt datatyp förhindrar direkt åtkomst till en datastruktur. (E) Abstrakta datatyper är i första hand ett sätt att organisera program och man skulle kunna programmera på samma sätt även om deklarationen abstype inte fanns i ML. Justification: Själva tanken med abstrakta datatyper är att hur de används (gränsytan) skall vara oberoende av hur de är implementerade (representationen). Ändringar av representationen skall alltså inte påverka gränsytan och därmed så behöver inte programmet utanför den abstrakta datatypen ändras. 12. Funktionen find nedan (med numrerade rader) är tänkt att beräkna numret på den första rad i en fil som är lika med en viss sträng. find har följande specifikation: find(filename,s) TYPE: string*string->int PRE: filename är namet på en fil som går att läsa. POST: Numret på den första rad i filename som är lika med s, och 0 om ingen sådan rad finns. 1 fun find(f,s) = 2 let 3 fun find (f,s,n) = 4 if TextIO.endOfStream f then 5 (TextIO.closeIn f ; 0) 6 else 7 if valof(textio.inputline f ) = s^"\n" then 8 n 9 else 10 find (f,s,n) 11 in 12 find (TextIO.openIn f, s,1) 13 end Det finns felaktigheter eller något som saknas på en eller flera rader. Vilken/vilka? (A) 5 & 8 (B) 5 & 10 (C) 8 & 10 (D) 8 & 10 & 12 (E) 12 Justification: Filen behöver stängas även på rad 8. Radräknaren ökas inte på rad 10.

13. Which of the following statements on walks of a right-rotatable balanced binary search tree T of at least two elements, any two of them being distinct, are true? (a) The inorder walk of T takes time exponential in the height of T. (b) The inorder walk of T lists the elements of T by strictly increasing keys. (c) The inorder walk of T is unchanged after a right rotation at the root of T. (A) all (B) (a) & (b) (C) (b) only (D) (b) & (c) (E) (c) only Justification: Because the height of a balanced tree is logarithmic in its number n of elements and the inorder walk takes time linear in n; because of the search invariant; and because it is indeed the inorder walk that is preserved by rotations. 14. What is the total number of multiplications made when evaluating p(n) using the definition of p below? Assume that a pre-condition for p(n) is that n is a positive integer power of 2. fun p(2) = 1 p(n) = let val d = 4 * p(n div 2) in d * d end (A) log 2 n (B) 4 log 2 n 1 (C) 1 6 n2 2 (D) 1 3 12 n2 1 (E) Another answer 3 Justification: It is 2 (log 2 n 1). By induction; it is the closure of the following divide-and-conquer recurrence for the number M(n) of multiplications made when evaluating p(n): { 0 if n = 2 M(n) = 1 M(n/2) + 2 if n = 2 k for k > 1 15. What is a tight asymptotic bound on the runtime of the function t below? Assume that a pre-condition for t(m, n) is that n is a non-negative integer. fun t(m,0) = 2 t(m,n) = t(m+3,n-1) + t(m+4,n-1) (A) Θ(n) (B) Θ(n lg n) (C) Θ(m n) (D) Θ(n 2 ) (E) Θ(2 n ) Justification: By Theorem 1, for a = 2 b = 0. Red herring: The first argument does not affect the runtime.

Frågor för betyg 5 Om du fått minst betyg 4 genom dina svar på de föregående frågorna och dessutom svarar rätt på minst 3 av de 5 frågorna i detta avsnitt så blir du godkänd med betyg 5. Du kan inte kompensera ett dåligt resultat i detta avsnitt med poäng från frågorna för betyg 3 eller 4. 16. Titta igen på funktionen från uppgift 2: fun klingsor(kundry,[amfortas])=amfortas klingsor(kundry,titurel::gurnemanz)= kundry(titurel,klingsor(kundry,gurnemanz)) Vilken typ har klingsor? (A) ( a * a -> a) * a list -> a (B) ( a * b -> b) * a list -> b (C) ( a * b -> c) * a list -> c (D) (int * int -> int) * int list -> int (E) int * int list -> int Justification: Av första klausulen till klingsor så kan man se att andra argumentet till klingsor måste vara en lista med element av samma typ som värdet av klingsor. Alltså är både alternativ (B) och (C) fel. Av sista raden i funktionsdefinitionen kan man se att kundry (första argumentet till klingsor) är en funktion. Alltså är alternativ (E) fel. Återstår (A) och (D). klingsor innehåller inga funktionsanrop som kan begränsa typen av data till int, alltså är det rätta svaret (A). 17. Vilket av följande påståenden om referenser i ML är felaktigt? (A) Varje referens måste tilldelas ett bestämt värde när den skapas. (B) Att ändra en datastruktur genom att ändra en referens som finns i den kan medföra att andra datastrukturer också ändras. (C) Användning av referenser är ett naturligt inslag i funktionell programmering. (D) Man kan ha en referens som hänvisar till en annan referens. (E) Även om!x =!y så kan x och y vara olika. Justification: En huvudprincip i funktionell programmering är att funktioner endast beräknar värden och inte har sidoeffekter. Även om sidoeffekter är möjliga i vanliga funktionella språk så är det inte naturligt att utnyttja dem. Meningsfull användning av referenser kräver användning av sidoeffekter. 18. Consider the hash table below of m = 7 cells, where denotes a deleted element: 0 1 2 3 4 5 6 11 22 33 55

Consider the ordinary hash function hash (key) = the leftmost digit of key under open addressing. Perform no rehashing. Assume that duplicate keys are allowed. What is the difference in the numbers of probes made (that is, the number of values of i tried) when trying to insert the key 14 under quadratic probing (with the probing function f(i) = i 2 ) compared to linear probing (with f(i) = i)? (A) 0 (B) 1 (C) 2 (D) 3 (E) 4 Justification: Under linear probing, key 14 goes into cell 4 upon 4 probes (at indices 1, 2, 3, 4 for i = 0, 1, 2, 3), because under the given assumption we need not probe beyond the first in order to make sure no 14 exists yet in the table; under quadratic probing, the insertion fails upon 7 probes (at indices 1, 2, 5, 3, 3, 5, 2 for i = 0, 1, 2, 3, 4, 5, 6). 19. Which of the following statements on trees are false? (a) A non-empty binary tree where all nodes have 0 or 2 children has one more leaf node than non-leaf nodes. (b) Every binomial tree is also a search tree, under some suitable generalisation of binary search trees to k-ary search trees, where k 2 is a constant. (c) Every binomial tree is also a balanced tree, under some suitable generalisation of the red-black balancing invariants to k-ary trees, where k 2 is a constant. (A) None (B) (c) only (C) (b) and (c) (D) All (E) Another answer Justification: (a): True. { Let L(n) be the number of leaf nodes of such a tree with n non-leaf nodes: 2 if n = 1 L(n) = = n + 1, to be proved by induction on n. L(n 1) + 1 if n > 1 (b): False, because the elements of a binomial tree do not need to satisfy any invariant (such as a heap invariant), hence no such generalisation can exist. (c): False, because a binomial tree of rank k has k subtrees of heights k 1, k 2,..., 0 respectively, hence for large enough k there will always be subtrees whose heights differ too much. 20. What is a tight asymptotic bound on the runtime of the function k below? Let n be the number of elements of its list argument. Assume that d(l) returns four sub-lists of list L, each of about half the length L of L, always in Θ( L ) time. In order to determine the runtime of the three calls to @, note that you must first determine the length of k(x) in terms of the length of X. fun k([]) = [] k(x::xs) = let val (P,Q,R,S) = d(xs) in k(p) @ k(q) @ x::k(r) @ k(s) end (A) Θ(n) (B) Θ(n lg n) (C) Θ(n 2 ) (D) Θ(n 2 lg n) (E) Another bound Justification: By Theorem 2 (case 2), ( as k(l) = Θ( L 2 ) (by case 1 for a = 4 b = 2 f( L ) = Θ(1)), so that f(n) = Θ 3 ( ) ) n 2 2 + n + 1 = Θ(n log b a ) = Θ(n 2 ), for a = 4 b = 2.